home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 44 / PC Actual CD 44.iso / Linux / Cygwin / full.exe / Disk1 / data1.cab / Tools / H-i586-cygwin32 / i586-cygwin32 / include / Windows32 / Structures.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-12-04  |  108.4 KB  |  4,809 lines

  1. /* 
  2.    Structures.h
  3.  
  4.    Declarations for all the Windows32 API Structures
  5.  
  6.    Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
  7.  
  8.    Author:  Scott Christley <scottc@net-community.com>
  9.    Date: 1996
  10.    
  11.    This file is part of the Windows32 API Library.
  12.  
  13.    This library is free software; you can redistribute it and/or
  14.    modify it under the terms of the GNU Library General Public
  15.    License as published by the Free Software Foundation; either
  16.    version 2 of the License, or (at your option) any later version.
  17.    
  18.    This library is distributed in the hope that it will be useful,
  19.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  20.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  21.    Library General Public License for more details.
  22.  
  23.    If you are interested in a warranty or support for this source code,
  24.    contact Scott Christley <scottc@net-community.com> for more information.
  25.    
  26.    You should have received a copy of the GNU Library General Public
  27.    License along with this library; see the file COPYING.LIB.
  28.    If not, write to the Free Software Foundation, 
  29.    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  30. */ 
  31.  
  32. #ifndef _GNU_H_WINDOWS32_STRUCTURES
  33. #define _GNU_H_WINDOWS32_STRUCTURES
  34.  
  35. #ifndef RC_INVOKED
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif /* __cplusplus */
  40.  
  41.  
  42. typedef struct _ABC {
  43.   int     abcA; 
  44.   UINT    abcB; 
  45.   int     abcC; 
  46. } ABC, *LPABC; 
  47.  
  48. typedef struct _ABCFLOAT {
  49.   FLOAT   abcfA; 
  50.   FLOAT   abcfB; 
  51.   FLOAT   abcfC; 
  52. } ABCFLOAT, *LPABCFLOAT; 
  53.  
  54. typedef struct tagACCEL {
  55.   BYTE   fVirt; 
  56.   WORD   key; 
  57.   WORD   cmd; 
  58. } ACCEL, *LPACCEL; 
  59.  
  60. typedef struct _ACE_HEADER {
  61.   BYTE AceType; 
  62.   BYTE AceFlags; 
  63.   WORD AceSize; 
  64. } ACE_HEADER; 
  65.  
  66. typedef DWORD ACCESS_MASK; 
  67. typedef ACCESS_MASK REGSAM;
  68.  
  69. typedef struct _ACCESS_ALLOWED_ACE {
  70.   ACE_HEADER Header; 
  71.   ACCESS_MASK Mask; 
  72.   DWORD SidStart; 
  73. } ACCESS_ALLOWED_ACE; 
  74.  
  75. typedef struct _ACCESS_DENIED_ACE {
  76.   ACE_HEADER  Header; 
  77.   ACCESS_MASK Mask; 
  78.   DWORD       SidStart; 
  79. } ACCESS_DENIED_ACE; 
  80.  
  81. typedef struct tagACCESSTIMEOUT {
  82.   UINT  cbSize; 
  83.   DWORD dwFlags; 
  84.   DWORD iTimeOutMSec; 
  85. } ACCESSTIMEOUT; 
  86.  
  87. typedef struct _ACL {
  88.   BYTE AclRevision; 
  89.   BYTE Sbz1; 
  90.   WORD AclSize; 
  91.   WORD AceCount; 
  92.   WORD Sbz2; 
  93. } ACL, *PACL; 
  94.  
  95. typedef struct _ACL_REVISION_INFORMATION {    
  96.   DWORD   AclRevision; 
  97. } ACL_REVISION_INFORMATION; 
  98.  
  99. typedef struct _ACL_SIZE_INFORMATION {
  100.   DWORD   AceCount; 
  101.   DWORD   AclBytesInUse; 
  102.   DWORD   AclBytesFree; 
  103. } ACL_SIZE_INFORMATION; 
  104.  
  105. typedef struct _ACTION_HEADER {
  106.   ULONG   transport_id; 
  107.   USHORT  action_code; 
  108.   USHORT  reserved; 
  109. } ACTION_HEADER; 
  110.  
  111. typedef struct _ADAPTER_STATUS {
  112.   UCHAR   adapter_address[6]; 
  113.   UCHAR   rev_major; 
  114.   UCHAR   reserved0; 
  115.   UCHAR   adapter_type; 
  116.   UCHAR   rev_minor; 
  117.   WORD    duration; 
  118.   WORD    frmr_recv; 
  119.   WORD    frmr_xmit; 
  120.   WORD    iframe_recv_err; 
  121.   WORD    xmit_aborts; 
  122.   DWORD   xmit_success; 
  123.   DWORD   recv_success; 
  124.   WORD    iframe_xmit_err; 
  125.   WORD    recv_buff_unavail; 
  126.   WORD    t1_timeouts; 
  127.   WORD    ti_timeouts; 
  128.   DWORD   reserved1; 
  129.   WORD    free_ncbs; 
  130.   WORD    max_cfg_ncbs; 
  131.   WORD    max_ncbs; 
  132.   WORD    xmit_buf_unavail; 
  133.   WORD    max_dgram_size; 
  134.   WORD    pending_sess; 
  135.   WORD    max_cfg_sess; 
  136.   WORD    max_sess; 
  137.   WORD    max_sess_pkt_size; 
  138.   WORD    name_count; 
  139. } ADAPTER_STATUS; 
  140.  
  141. typedef struct _ADDJOB_INFO_1 {
  142.   LPTSTR  Path; 
  143.   DWORD   JobId; 
  144. } ADDJOB_INFO_1; 
  145.  
  146. typedef struct tagANIMATIONINFO { 
  147.   UINT cbSize; 
  148.   int  iMinAnimate; 
  149. } ANIMATIONINFO, *LPANIMATIONINFO; 
  150.  
  151. typedef struct _RECT {  
  152.   LONG left;       
  153.   LONG top;        
  154.   LONG right;      
  155.   LONG bottom;     
  156. } RECT, *LPRECT, *PRECT; 
  157.  
  158. typedef struct _RECTL { 
  159.   LONG left;     
  160.   LONG top;      
  161.   LONG right;    
  162.   LONG bottom;   
  163. } RECTL; 
  164.  
  165. typedef struct _AppBarData {
  166.   DWORD  cbSize;           
  167.   HWND   hWnd;             
  168.   UINT   uCallbackMessage; 
  169.   UINT   uEdge;            
  170.   RECT   rc;               
  171.   LPARAM lParam;           
  172. } APPBARDATA, *PAPPBARDATA; 
  173.  
  174. typedef struct tagBITMAP
  175. {
  176.   LONG        bmType;
  177.   LONG        bmWidth;
  178.   LONG        bmHeight;
  179.   LONG        bmWidthBytes;
  180.   WORD        bmPlanes;
  181.   WORD        bmBitsPixel;
  182.   LPVOID      bmBits;
  183. } BITMAP, *PBITMAP,   *NPBITMAP,   *LPBITMAP;
  184.  
  185. typedef struct tagBITMAPCOREHEADER {
  186.   DWORD   bcSize; 
  187.   WORD    bcWidth; 
  188.   WORD    bcHeight; 
  189.   WORD    bcPlanes; 
  190.   WORD    bcBitCount; 
  191. } PACKED BITMAPCOREHEADER, *PBITMAPCOREHEADER, *LPBITMAPCOREHEADER; 
  192.  
  193. typedef struct tagRGBTRIPLE { 
  194.   BYTE rgbtBlue; 
  195.   BYTE rgbtGreen; 
  196.   BYTE rgbtRed; 
  197. } PACKED RGBTRIPLE, *PRGBTRIPLE, *LPRGBTRIPLE;
  198.  
  199. typedef struct tagBITMAPCOREINFO {
  200.   BITMAPCOREHEADER  bmciHeader; 
  201.   RGBTRIPLE         bmciColors[1]; 
  202. } PACKED BITMAPCOREINFO, *PBITMAPCOREINFO, *LPBITMAPCOREINFO; 
  203.  
  204. typedef struct tagBITMAPFILEHEADER {
  205.   WORD    bfType; 
  206.   DWORD   bfSize; 
  207.   WORD    bfReserved1; 
  208.   WORD    bfReserved2; 
  209.   DWORD   bfOffBits; 
  210. } PACKED BITMAPFILEHEADER; 
  211.  
  212. typedef struct tagBITMAPINFOHEADER {
  213.   DWORD  biSize; 
  214.   LONG   biWidth; 
  215.   LONG   biHeight; 
  216.   WORD   biPlanes; 
  217.   WORD   biBitCount; 
  218.   DWORD  biCompression; 
  219.   DWORD  biSizeImage; 
  220.   LONG   biXPelsPerMeter; 
  221.   LONG   biYPelsPerMeter; 
  222.   DWORD  biClrUsed; 
  223.   DWORD  biClrImportant; 
  224. } PACKED BITMAPINFOHEADER, *LPBITMAPINFOHEADER, *PBITMAPINFOHEADER; 
  225.  
  226. typedef struct tagRGBQUAD { 
  227.   BYTE    rgbBlue; 
  228.   BYTE    rgbGreen; 
  229.   BYTE    rgbRed; 
  230.   BYTE    rgbReserved; 
  231. } PACKED RGBQUAD, *PRGBQUAD, *LPRGBQUAD; 
  232.  
  233. typedef struct tagBITMAPINFO {
  234.   BITMAPINFOHEADER bmiHeader; 
  235.   RGBQUAD          bmiColors[1]; 
  236. } PACKED BITMAPINFO, *LPBITMAPINFO, *PBITMAPINFO; 
  237.  
  238. typedef struct tagBITMAPINFOMASK {
  239.   BITMAPINFOHEADER bmiHeader;
  240.   DWORD            dwMask[3];
  241. } BITMAPINFOMASK, LPBITMAPINFOMASK, *PBITMAPINFOMASK;
  242.  
  243. typedef long FXPT2DOT30,  * LPFXPT2DOT30;
  244.  
  245. typedef struct tagCIEXYZ
  246. {
  247.   FXPT2DOT30 ciexyzX; 
  248.   FXPT2DOT30 ciexyzY; 
  249.   FXPT2DOT30 ciexyzZ; 
  250. } CIEXYZ, *LPCIEXYZ; 
  251.  
  252. typedef struct tagCIEXYZTRIPLE
  253. {
  254.   CIEXYZ  ciexyzRed; 
  255.   CIEXYZ  ciexyzGreen; 
  256.   CIEXYZ  ciexyzBlue; 
  257. } CIEXYZTRIPLE, *LPCIEXYZTRIPLE; 
  258.  
  259. typedef struct {
  260.   DWORD        bV4Size;
  261.   LONG         bV4Width;
  262.   LONG         bV4Height;
  263.   WORD         bV4Planes;
  264.   WORD         bV4BitCount;
  265.   DWORD        bV4V4Compression;
  266.   DWORD        bV4SizeImage;
  267.   LONG         bV4XPelsPerMeter;
  268.   LONG         bV4YPelsPerMeter;
  269.   DWORD        bV4ClrUsed;
  270.   DWORD        bV4ClrImportant;
  271.   DWORD        bV4RedMask;
  272.   DWORD        bV4GreenMask;
  273.   DWORD        bV4BlueMask;
  274.   DWORD        bV4AlphaMask;
  275.   DWORD        bV4CSType;
  276.   CIEXYZTRIPLE bV4Endpoints;
  277.   DWORD        bV4GammaRed;
  278.   DWORD        bV4GammaGreen;
  279.   DWORD        bV4GammaBlue;
  280. } BITMAPV4HEADER,   *LPBITMAPV4HEADER, *PBITMAPV4HEADER; 
  281.  
  282. typedef struct _BLOB { 
  283.   ULONG   cbSize; 
  284.   BYTE    *pBlobData; 
  285. } BLOB; 
  286.  
  287. typedef struct _SHITEMID {       
  288.   USHORT cb;       
  289.   BYTE   abID[1];  
  290. } SHITEMID, * LPSHITEMID; 
  291. typedef const SHITEMID  * LPCSHITEMID; 
  292.  
  293. typedef struct _ITEMIDLIST { 
  294.   SHITEMID mkid;  
  295. } ITEMIDLIST, * LPITEMIDLIST; 
  296. typedef const ITEMIDLIST * LPCITEMIDLIST; 
  297.  
  298. typedef struct _browseinfo { 
  299.   HWND hwndOwner;          
  300.   LPCITEMIDLIST pidlRoot;  
  301.   LPSTR pszDisplayName;    
  302.   LPCSTR lpszTitle;        
  303.   UINT ulFlags;            
  304.   BFFCALLBACK lpfn;        
  305.   LPARAM lParam;           
  306.   int iImage;              
  307. } BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO; 
  308.  
  309. typedef struct _FILETIME { 
  310.   DWORD dwLowDateTime; 
  311.   DWORD dwHighDateTime; 
  312. } FILETIME, *LPFILETIME, *PFILETIME; 
  313.  
  314. typedef struct _BY_HANDLE_FILE_INFORMATION {
  315.   DWORD    dwFileAttributes; 
  316.   FILETIME ftCreationTime; 
  317.   FILETIME ftLastAccessTime; 
  318.   FILETIME ftLastWriteTime; 
  319.   DWORD    dwVolumeSerialNumber; 
  320.   DWORD    nFileSizeHigh; 
  321.   DWORD    nFileSizeLow; 
  322.   DWORD    nNumberOfLinks; 
  323.   DWORD    nFileIndexHigh; 
  324.   DWORD    nFileIndexLow; 
  325. } BY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION; 
  326.  
  327. typedef struct _FIXED { 
  328.   WORD  fract; 
  329.   short value; 
  330. } FIXED; 
  331.  
  332. typedef struct tagPOINT { 
  333.   LONG x; 
  334.   LONG y; 
  335. } POINT, *LPPOINT, *PPOINT; 
  336.  
  337. typedef struct tagPOINTFX { 
  338.   FIXED x; 
  339.   FIXED y; 
  340. } POINTFX; 
  341.  
  342. typedef struct _POINTL { 
  343.   LONG x; 
  344.   LONG y; 
  345. } POINTL; 
  346.  
  347. typedef struct tagPOINTS { 
  348.   SHORT x;    
  349.   SHORT y;    
  350. } POINTS; 
  351.  
  352. typedef struct _tagCANDIDATEFORM {
  353.   DWORD  dwIndex;       
  354.   DWORD  dwStyle;       
  355.   POINT  ptCurrentPos;  
  356.   RECT   rcArea;        
  357. } CANDIDATEFORM, *LPCANDIDATEFORM;
  358.  
  359. typedef struct _tagCANDIDATELIST {
  360.   DWORD  dwSize;       
  361.   DWORD  dwStyle;      
  362.   DWORD  dwCount;      
  363.   DWORD  dwSelection;  
  364.   DWORD  dwPageStart;  
  365.   DWORD  dwPageSize;   
  366.   DWORD  dwOffset[1];
  367. } CANDIDATELIST, *LPCANDIDATELIST;
  368.  
  369. typedef struct tagCREATESTRUCT { 
  370.   LPVOID    lpCreateParams;  
  371.   HINSTANCE hInstance;       
  372.   HMENU     hMenu;           
  373.   HWND      hwndParent;      
  374.   int       cy;              
  375.   int       cx;              
  376.   int       y;               
  377.   int       x;               
  378.   LONG      style;           
  379.   LPCTSTR   lpszName;        
  380.   LPCTSTR   lpszClass;       
  381.   DWORD     dwExStyle;       
  382. } CREATESTRUCT, *LPCREATESTRUCT; 
  383.  
  384. typedef struct tagCBT_CREATEWND {
  385.   LPCREATESTRUCT lpcs; 
  386.   HWND           hwndInsertAfter; 
  387. } CBT_CREATEWND; 
  388.  
  389. typedef struct tagCBTACTIVATESTRUCT {
  390.   WINBOOL fMouse; 
  391.   HWND hWndActive; 
  392. } CBTACTIVATESTRUCT; 
  393.  
  394. typedef struct _CHAR_INFO {
  395.   union {               
  396.     WCHAR UnicodeChar; 
  397.     CHAR AsciiChar; 
  398.   } Char; 
  399.   WORD Attributes;      
  400. } CHAR_INFO, *PCHAR_INFO; 
  401.  
  402. typedef struct _charformat { 
  403.   UINT     cbSize; 
  404.   DWORD    dwMask; 
  405.   DWORD    dwEffects; 
  406.   LONG     yHeight; 
  407.   LONG     yOffset; 
  408.   COLORREF crTextColor; 
  409.   BYTE     bCharSet; 
  410.   BYTE     bPitchAndFamily; 
  411.   TCHAR    szFaceName[LF_FACESIZE]; 
  412. } CHARFORMAT; 
  413.  
  414. typedef struct _charrange { 
  415.   LONG cpMin; 
  416.   LONG cpMax; 
  417. } CHARRANGE; 
  418.  
  419. typedef struct tagCHARSET {
  420.   DWORD aflBlock[3]; 
  421.   DWORD flLang; 
  422. } CHARSET; 
  423.  
  424. typedef struct tagFONTSIGNATURE {
  425.   DWORD  fsUsb[4];
  426.   DWORD  fsCsb[2];
  427. } FONTSIGNATURE, *LPFONTSIGNATURE; 
  428.  
  429. typedef struct {
  430.   UINT ciCharset;
  431.   UINT ciACP;
  432.   FONTSIGNATURE fs;
  433. } CHARSETINFO, *LPCHARSETINFO;
  434.  
  435. typedef struct { 
  436.   DWORD        lStructSize; 
  437.   HWND         hwndOwner; 
  438.   HWND         hInstance; 
  439.   COLORREF     rgbResult; 
  440.   COLORREF*    lpCustColors; 
  441.   DWORD        Flags; 
  442.   LPARAM       lCustData; 
  443.   LPCCHOOKPROC lpfnHook; 
  444.   LPCTSTR      lpTemplateName; 
  445. } CHOOSECOLOR, *LPCHOOSECOLOR; 
  446.  
  447. typedef struct tagLOGFONTA { 
  448.   LONG lfHeight; 
  449.   LONG lfWidth; 
  450.   LONG lfEscapement; 
  451.   LONG lfOrientation; 
  452.   LONG lfWeight; 
  453.   BYTE lfItalic; 
  454.   BYTE lfUnderline; 
  455.   BYTE lfStrikeOut; 
  456.   BYTE lfCharSet; 
  457.   BYTE lfOutPrecision; 
  458.   BYTE lfClipPrecision; 
  459.   BYTE lfQuality; 
  460.   BYTE lfPitchAndFamily; 
  461.   CHAR lfFaceName[LF_FACESIZE]; 
  462. } LOGFONTA, *LPLOGFONTA, *PLOGFONTA; 
  463.  
  464. typedef struct tagLOGFONTW { 
  465.   LONG lfHeight; 
  466.   LONG lfWidth; 
  467.   LONG lfEscapement; 
  468.   LONG lfOrientation; 
  469.   LONG lfWeight; 
  470.   BYTE lfItalic; 
  471.   BYTE lfUnderline; 
  472.   BYTE lfStrikeOut; 
  473.   BYTE lfCharSet; 
  474.   BYTE lfOutPrecision; 
  475.   BYTE lfClipPrecision; 
  476.   BYTE lfQuality; 
  477.   BYTE lfPitchAndFamily; 
  478.   WCHAR lfFaceName[LF_FACESIZE]; 
  479. } LOGFONTW, *LPLOGFONTW, *PLOGFONTW; 
  480.  
  481. #ifdef UNICODE
  482. typedef LOGFONTW LOGFONT;
  483. #else
  484. typedef LOGFONTA LOGFONT;
  485. #endif
  486.  
  487. typedef LOGFONT* PLOGFONT;
  488. typedef LOGFONT* NPLOGFONT;
  489. typedef LOGFONT* LPLOGFONT;
  490.  
  491. typedef struct { 
  492.   DWORD        lStructSize; 
  493.   HWND         hwndOwner; 
  494.   HDC          hDC; 
  495.   LPLOGFONT    lpLogFont; 
  496.   INT          iPointSize; 
  497.   DWORD        Flags; 
  498.   DWORD        rgbColors; 
  499.   LPARAM       lCustData; 
  500.   LPCFHOOKPROC lpfnHook; 
  501.   LPCTSTR      lpTemplateName; 
  502.   HINSTANCE    hInstance; 
  503.   LPTSTR       lpszStyle; 
  504.   WORD         nFontType; 
  505.   WORD         ___MISSING_ALIGNMENT__; 
  506.   INT          nSizeMin; 
  507.   INT          nSizeMax; 
  508. } CHOOSEFONT, *LPCHOOSEFONT; 
  509.  
  510. typedef struct _IDA { 
  511.   UINT cidl;     
  512.   UINT aoffset[1]; 
  513. } CIDA, * LPIDA; 
  514.  
  515. typedef struct tagCLIENTCREATESTRUCT {
  516.   HANDLE hWindowMenu; 
  517.   UINT   idFirstChild; 
  518. } CLIENTCREATESTRUCT; 
  519.  
  520. typedef CLIENTCREATESTRUCT *LPCLIENTCREATESTRUCT;
  521.  
  522. typedef struct _CMInvokeCommandInfo { 
  523.   DWORD cbSize;       
  524.   DWORD fMask;        
  525.   HWND hwnd;          
  526.   LPCSTR lpVerb;      
  527.   LPCSTR lpParameters;
  528.   LPCSTR lpDirectory; 
  529.   int nShow;          
  530.   DWORD dwHotKey;     
  531.   HANDLE hIcon;       
  532. } CMINVOKECOMMANDINFO, *LPCMINVOKECOMMANDINFO; 
  533.  
  534. typedef struct  tagCOLORADJUSTMENT {
  535.   WORD  caSize; 
  536.   WORD  caFlags; 
  537.   WORD  caIlluminantIndex; 
  538.   WORD  caRedGamma; 
  539.   WORD  caGreenGamma; 
  540.   WORD  caBlueGamma; 
  541.   WORD  caReferenceBlack; 
  542.   WORD  caReferenceWhite; 
  543.   SHORT caContrast; 
  544.   SHORT caBrightness; 
  545.   SHORT caColorfulness; 
  546.   SHORT caRedGreenTint; 
  547. } COLORADJUSTMENT, *LPCOLORADJUSTMENT; 
  548.  
  549. typedef struct _COLORMAP { 
  550.   COLORREF from; 
  551.   COLORREF to; 
  552. } COLORMAP,  * LPCOLORMAP; 
  553.  
  554. typedef struct _DCB { 
  555.   DWORD DCBlength;          
  556.   DWORD BaudRate;           
  557.   DWORD fBinary: 1;         
  558.   DWORD fParity: 1;         
  559.   DWORD fOutxCtsFlow:1;     
  560.   DWORD fOutxDsrFlow:1;     
  561.   DWORD fDtrControl:2;      
  562.   DWORD fDsrSensitivity:1;  
  563.   DWORD fTXContinueOnXoff:1;
  564.   DWORD fOutX: 1;        
  565.   DWORD fInX: 1;         
  566.   DWORD fErrorChar: 1;   
  567.   DWORD fNull: 1;        
  568.   DWORD fRtsControl:2;   
  569.   DWORD fAbortOnError:1; 
  570.   DWORD fDummy2:17;      
  571.   WORD wReserved;        
  572.   WORD XonLim;           
  573.   WORD XoffLim;          
  574.   BYTE ByteSize;         
  575.   BYTE Parity;           
  576.   BYTE StopBits;         
  577.   char XonChar;          
  578.   char XoffChar;         
  579.   char ErrorChar;        
  580.   char EofChar;          
  581.   char EvtChar;          
  582.   WORD wReserved1;       
  583. } DCB, *LPDCB; 
  584.  
  585. typedef struct _COMM_CONFIG {
  586.   DWORD dwSize;
  587.   WORD  wVersion; 
  588.   WORD  wReserved;
  589.   DCB   dcb;
  590.   DWORD dwProviderSubType;
  591.   DWORD dwProviderOffset;
  592.   DWORD dwProviderSize;
  593.   WCHAR wcProviderData[1];
  594. } COMMCONFIG, *LPCOMMCONFIG;
  595.  
  596. typedef struct _COMMPROP {
  597.   WORD  wPacketLength;       
  598.   WORD  wPacketVersion;      
  599.   DWORD dwServiceMask;       
  600.   DWORD dwReserved1;         
  601.   DWORD dwMaxTxQueue;        
  602.   DWORD dwMaxRxQueue;        
  603.   DWORD dwMaxBaud;           
  604.   DWORD dwProvSubType;       
  605.   DWORD dwProvCapabilities;  
  606.   DWORD dwSettableParams;    
  607.   DWORD dwSettableBaud;      
  608.   WORD  wSettableData;       
  609.   WORD  wSettableStopParity; 
  610.   DWORD dwCurrentTxQueue;    
  611.   DWORD dwCurrentRxQueue;    
  612.   DWORD dwProvSpec1;         
  613.   DWORD dwProvSpec2;         
  614.   WCHAR wcProvChar[1];       
  615. } COMMPROP, *LPCOMMPROP; 
  616.  
  617. typedef struct _COMMTIMEOUTS {
  618.   DWORD ReadIntervalTimeout; 
  619.   DWORD ReadTotalTimeoutMultiplier; 
  620.   DWORD ReadTotalTimeoutConstant; 
  621.   DWORD WriteTotalTimeoutMultiplier; 
  622.   DWORD WriteTotalTimeoutConstant; 
  623. } COMMTIMEOUTS,*LPCOMMTIMEOUTS; 
  624.  
  625. typedef struct tagCOMPAREITEMSTRUCT {
  626.   UINT  CtlType; 
  627.   UINT  CtlID; 
  628.   HWND  hwndItem; 
  629.   UINT  itemID1; 
  630.   DWORD itemData1; 
  631.   UINT  itemID2; 
  632.   DWORD itemData2; 
  633. } COMPAREITEMSTRUCT; 
  634.  
  635. typedef struct {
  636.   COLORREF crText;        
  637.   COLORREF crBackground;  
  638.   DWORD dwEffects;        
  639. } COMPCOLOR;
  640.  
  641. typedef struct _tagCOMPOSITIONFORM {
  642.   DWORD  dwStyle;       
  643.   POINT  ptCurrentPos;  
  644.   RECT   rcArea;        
  645. } COMPOSITIONFORM, *LPCOMPOSITIONFORM;
  646.  
  647. typedef struct _COMSTAT {
  648.   DWORD fCtsHold : 1;   
  649.   DWORD fDsrHold : 1;   
  650.   DWORD fRlsdHold : 1;  
  651.   DWORD fXoffHold : 1;  
  652.   DWORD fXoffSent : 1;  
  653.   DWORD fEof : 1;       
  654.   DWORD fTxim : 1;      
  655.   DWORD fReserved : 25; 
  656.   DWORD cbInQue;        
  657.   DWORD cbOutQue;       
  658. } COMSTAT, *LPCOMSTAT; 
  659.  
  660. typedef struct _CONSOLE_CURSOR_INFO {
  661.   DWORD  dwSize; 
  662.   WINBOOL   bVisible; 
  663. } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; 
  664.  
  665. typedef struct _COORD {
  666.   SHORT X;    
  667.   SHORT Y;    
  668. } COORD; 
  669.  
  670. typedef struct _SMALL_RECT { 
  671.   SHORT Left;      
  672.   SHORT Top;       
  673.   SHORT Right;     
  674.   SHORT Bottom;    
  675. } SMALL_RECT, *PSMALL_RECT; 
  676.  
  677. typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
  678.   COORD      dwSize; 
  679.   COORD      dwCursorPosition; 
  680.   WORD       wAttributes; 
  681.   SMALL_RECT srWindow; 
  682.   COORD      dwMaximumWindowSize; 
  683. } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO ; 
  684.  
  685. #ifdef __i386__
  686.  
  687. typedef struct _FLOATING_SAVE_AREA {
  688.     DWORD   ControlWord;
  689.     DWORD   StatusWord;
  690.     DWORD   TagWord;
  691.     DWORD   ErrorOffset;
  692.     DWORD   ErrorSelector;
  693.     DWORD   DataOffset;
  694.     DWORD   DataSelector;
  695.     BYTE    RegisterArea[80];
  696.     DWORD   Cr0NpxState;
  697. } FLOATING_SAVE_AREA;
  698.  
  699. typedef struct _CONTEXT {
  700.     DWORD ContextFlags;
  701.  
  702.     DWORD   Dr0;
  703.     DWORD   Dr1;
  704.     DWORD   Dr2;
  705.     DWORD   Dr3;
  706.     DWORD   Dr6;
  707.     DWORD   Dr7;
  708.  
  709.     FLOATING_SAVE_AREA FloatSave;
  710.  
  711.     DWORD   SegGs;
  712.     DWORD   SegFs;
  713.     DWORD   SegEs;
  714.     DWORD   SegDs;
  715.  
  716.     DWORD   Edi;
  717.     DWORD   Esi;
  718.     DWORD   Ebx;
  719.     DWORD   Edx;
  720.     DWORD   Ecx;
  721.     DWORD   Eax;
  722.  
  723.     DWORD   Ebp;
  724.     DWORD   Eip;
  725.     DWORD   SegCs; 
  726.     DWORD   EFlags;
  727.     DWORD   Esp;
  728.     DWORD   SegSs;
  729. } CONTEXT, *PCONTEXT, *LPCONTEXT;
  730.  
  731. #else /* __ppc__ */
  732.  
  733. typedef struct
  734.   {
  735.     /* Floating point registers returned when CONTEXT_FLOATING_POINT is set */
  736.     double Fpr0;
  737.     double Fpr1;
  738.     double Fpr2;
  739.     double Fpr3;
  740.     double Fpr4;
  741.     double Fpr5;
  742.     double Fpr6;
  743.     double Fpr7;
  744.     double Fpr8;
  745.     double Fpr9;
  746.     double Fpr10;
  747.     double Fpr11;
  748.     double Fpr12;
  749.     double Fpr13;
  750.     double Fpr14;
  751.     double Fpr15;
  752.     double Fpr16;
  753.     double Fpr17;
  754.     double Fpr18;
  755.     double Fpr19;
  756.     double Fpr20;
  757.     double Fpr21;
  758.     double Fpr22;
  759.     double Fpr23;
  760.     double Fpr24;
  761.     double Fpr25;
  762.     double Fpr26;
  763.     double Fpr27;
  764.     double Fpr28;
  765.     double Fpr29;
  766.     double Fpr30;
  767.     double Fpr31;
  768.     double Fpscr;
  769.  
  770.     /* Integer registers returned when CONTEXT_INTEGER is set.  */
  771.     DWORD Gpr0;
  772.     DWORD Gpr1;
  773.     DWORD Gpr2;
  774.     DWORD Gpr3;
  775.     DWORD Gpr4;
  776.     DWORD Gpr5;
  777.     DWORD Gpr6;
  778.     DWORD Gpr7;
  779.     DWORD Gpr8;
  780.     DWORD Gpr9;
  781.     DWORD Gpr10;
  782.     DWORD Gpr11;
  783.     DWORD Gpr12;
  784.     DWORD Gpr13;
  785.     DWORD Gpr14;
  786.     DWORD Gpr15;
  787.     DWORD Gpr16;
  788.     DWORD Gpr17;
  789.     DWORD Gpr18;
  790.     DWORD Gpr19;
  791.     DWORD Gpr20;
  792.     DWORD Gpr21;
  793.     DWORD Gpr22;
  794.     DWORD Gpr23;
  795.     DWORD Gpr24;
  796.     DWORD Gpr25;
  797.     DWORD Gpr26;
  798.     DWORD Gpr27;
  799.     DWORD Gpr28;
  800.     DWORD Gpr29;
  801.     DWORD Gpr30;
  802.     DWORD Gpr31;
  803.  
  804.     DWORD Cr;            /* Condition register */
  805.     DWORD Xer;            /* Fixed point exception register */
  806.  
  807.     /* The following are set when CONTEXT_CONTROL is set.  */
  808.     DWORD Msr;            /* Machine status register */
  809.     DWORD Iar;            /* Instruction address register */
  810.     DWORD Lr;            /* Link register */
  811.     DWORD Ctr;            /* Control register */
  812.  
  813.     /* Control which context values are returned */
  814.     DWORD ContextFlags;
  815.     DWORD Fill[3];
  816.  
  817.     /* Registers returned if CONTEXT_DEBUG_REGISTERS is set.  */
  818.     DWORD Dr0;                          /* Breakpoint Register 1 */
  819.     DWORD Dr1;                          /* Breakpoint Register 2 */
  820.     DWORD Dr2;                          /* Breakpoint Register 3 */
  821.     DWORD Dr3;                          /* Breakpoint Register 4 */
  822.     DWORD Dr4;                          /* Breakpoint Register 5 */
  823.     DWORD Dr5;                          /* Breakpoint Register 6 */
  824.     DWORD Dr6;                          /* Debug Status Register */
  825.     DWORD Dr7;                          /* Debug Control Register */
  826. } CONTEXT, *PCONTEXT, *LPCONTEXT;
  827. #endif
  828.  
  829. typedef struct _LIST_ENTRY { 
  830.   struct _LIST_ENTRY *Flink; 
  831.   struct _LIST_ENTRY *Blink; 
  832. } LIST_ENTRY, *PLIST_ENTRY; 
  833.  
  834. typedef struct _CRITICAL_SECTION_DEBUG {
  835.     WORD   Type;
  836.     WORD   CreatorBackTraceIndex;
  837.     struct _CRITICAL_SECTION *CriticalSection;
  838.     LIST_ENTRY ProcessLocksList;
  839.     DWORD EntryCount;
  840.     DWORD ContentionCount;
  841.     DWORD Depth;
  842.     PVOID OwnerBackTrace[ 5 ];
  843. } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG;
  844.  
  845. typedef struct _CRITICAL_SECTION {
  846.     PCRITICAL_SECTION_DEBUG DebugInfo;
  847.     LONG LockCount;
  848.     LONG RecursionCount;
  849.     HANDLE OwningThread;
  850.     HANDLE LockSemaphore;
  851.     DWORD Reserved;
  852. } CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION;
  853.  
  854. typedef struct _SECURITY_QUALITY_OF_SERVICE { 
  855.   DWORD Length; 
  856.   SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  857.   /* SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; */
  858.   WINBOOL ContextTrackingMode; 
  859.   BOOLEAN EffectiveOnly; 
  860. } SECURITY_QUALITY_OF_SERVICE; 
  861.  
  862. typedef struct tagCONVCONTEXT { 
  863.   UINT  cb; 
  864.   UINT  wFlags; 
  865.   UINT  wCountryID; 
  866.   int   iCodePage; 
  867.   DWORD dwLangID; 
  868.   DWORD dwSecurity; 
  869.   SECURITY_QUALITY_OF_SERVICE qos;
  870. } CONVCONTEXT; 
  871.  
  872. typedef CONVCONTEXT *PCONVCONTEXT;
  873.  
  874. typedef struct tagCONVINFO { 
  875.   DWORD       cb; 
  876.   DWORD       hUser; 
  877.   HCONV       hConvPartner; 
  878.   HSZ         hszSvcPartner; 
  879.   HSZ         hszServiceReq; 
  880.   HSZ         hszTopic; 
  881.   HSZ         hszItem; 
  882.   UINT        wFmt; 
  883.   UINT        wType; 
  884.   UINT        wStatus; 
  885.   UINT        wConvst; 
  886.   UINT        wLastError; 
  887.   HCONVLIST   hConvList; 
  888.   CONVCONTEXT ConvCtxt; 
  889.   HWND        hwnd; 
  890.   HWND        hwndPartner; 
  891. } CONVINFO; 
  892.  
  893. typedef struct tagCOPYDATASTRUCT { 
  894.   DWORD dwData; 
  895.   DWORD cbData; 
  896.   PVOID lpData; 
  897. } COPYDATASTRUCT; 
  898.  
  899. typedef struct _cpinfo { 
  900.   UINT MaxCharSize; 
  901.   BYTE DefaultChar[MAX_DEFAULTCHAR]; 
  902.   BYTE LeadByte[MAX_LEADBYTES]; 
  903. } CPINFO, *LPCPINFO; 
  904.  
  905. typedef struct tagCPLINFO { 
  906.   int  idIcon; 
  907.   int  idName; 
  908.   int  idInfo; 
  909.   LONG lData; 
  910. } CPLINFO; 
  911.  
  912. typedef struct _CREATE_PROCESS_DEBUG_INFO {
  913.   HANDLE hFile; 
  914.   HANDLE hProcess; 
  915.   HANDLE hThread; 
  916.   LPVOID lpBaseOfImage; 
  917.   DWORD dwDebugInfoFileOffset; 
  918.   DWORD nDebugInfoSize; 
  919.   LPVOID lpThreadLocalBase; 
  920.   LPTHREAD_START_ROUTINE lpStartAddress; 
  921.   LPVOID lpImageName; 
  922.   WORD fUnicode; 
  923. } CREATE_PROCESS_DEBUG_INFO; 
  924.  
  925. typedef struct _CREATE_THREAD_DEBUG_INFO {
  926.   HANDLE hThread; 
  927.   LPVOID lpThreadLocalBase; 
  928.   LPTHREAD_START_ROUTINE lpStartAddress; 
  929. } CREATE_THREAD_DEBUG_INFO; 
  930.  
  931. /*
  932.  TODO: sockets
  933. typedef struct _SOCKET_ADDRESS {
  934.   LPSOCKADDR lpSockaddr ;
  935.   INT iSockaddrLength ;
  936. } SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
  937. */
  938.  
  939. /*
  940. typedef struct _CSADDR_INFO { 
  941.   SOCKET_ADDRESS  LocalAddr; 
  942.   SOCKET_ADDRESS  RemoteAddr; 
  943.   INT             iSocketType; 
  944.   INT             iProtocol; 
  945. } CSADDR_INFO; 
  946. */
  947.  
  948. typedef struct _currencyfmt { 
  949.   UINT      NumDigits; 
  950.   UINT      LeadingZero; 
  951.   UINT      Grouping; 
  952.   LPTSTR    lpDecimalSep; 
  953.   LPTSTR    lpThousandSep; 
  954.   UINT      NegativeOrder; 
  955.   UINT      PositiveOrder; 
  956.   LPTSTR    lpCurrencySymbol;
  957. } CURRENCYFMT; 
  958.  
  959. typedef struct tagCURSORSHAPE {  
  960.   int     xHotSpot; 
  961.   int     yHotSpot; 
  962.   int     cx; 
  963.   int     cy; 
  964.   int     cbWidth; 
  965.   BYTE    Planes; 
  966.   BYTE    BitsPixel; 
  967. } CURSORSHAPE,   *LPCURSORSHAPE; 
  968.  
  969. typedef struct tagCWPRETSTRUCT {
  970.   LRESULT lResult; 
  971.   LPARAM  lParam; 
  972.   WPARAM  wParam; 
  973.   DWORD   message; 
  974.   HWND    hwnd; 
  975. } CWPRETSTRUCT; 
  976.  
  977. typedef struct tagCWPSTRUCT {
  978.   LPARAM  lParam; 
  979.   WPARAM  wParam; 
  980.   UINT    message; 
  981.   HWND    hwnd; 
  982. } CWPSTRUCT; 
  983.  
  984. typedef struct _DATATYPES_INFO_1 { 
  985.   LPTSTR pName; 
  986. } DATATYPES_INFO_1; 
  987.  
  988. typedef struct { 
  989.   unsigned short bAppReturnCode:8, 
  990.     reserved:6, 
  991.     fBusy:1, 
  992.     fAck:1; 
  993. } DDEACK; 
  994.  
  995. typedef struct { 
  996.   unsigned short reserved:14, 
  997.     fDeferUpd:1, 
  998.     fAckReq:1; 
  999.   short cfFormat; 
  1000. } DDEADVISE; 
  1001.  
  1002. typedef struct { 
  1003.   unsigned short unused:12, 
  1004.     fResponse:1, 
  1005.     fRelease:1, 
  1006.     reserved:1, 
  1007.     fAckReq:1; 
  1008.   short cfFormat; 
  1009.   BYTE  Value[1]; 
  1010. } DDEDATA; 
  1011.  
  1012. typedef struct { 
  1013.   unsigned short unused:13, 
  1014.     fRelease:1, 
  1015.     fDeferUpd:1, 
  1016.     fAckReq:1; 
  1017.   short cfFormat; 
  1018. } DDELN; 
  1019.  
  1020. typedef struct tagDDEML_MSG_HOOK_DATA { 
  1021.   UINT  uiLo; 
  1022.   UINT  uiHi; 
  1023.   DWORD cbData; 
  1024.   DWORD Data[8]; 
  1025. } DDEML_MSG_HOOK_DATA; 
  1026.  
  1027. typedef struct { 
  1028.   unsigned short unused:13, 
  1029.     fRelease:1, 
  1030.     fReserved:2; 
  1031.   short cfFormat; 
  1032.   BYTE  Value[1]; 
  1033. } DDEPOKE; 
  1034.  
  1035. typedef struct { 
  1036.   unsigned short unused:12, 
  1037.     fAck:1, 
  1038.     fRelease:1, 
  1039.     fReserved:1, 
  1040.     fAckReq:1; 
  1041.   short cfFormat; 
  1042.   BYTE rgb[1]; 
  1043. } DDEUP; 
  1044.  
  1045. typedef struct _EXCEPTION_RECORD { 
  1046.   DWORD ExceptionCode; 
  1047.   DWORD ExceptionFlags; 
  1048.   struct _EXCEPTION_RECORD *ExceptionRecord; 
  1049.   PVOID ExceptionAddress; 
  1050.   DWORD NumberParameters; 
  1051.   DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 
  1052. } EXCEPTION_RECORD, *PEXCEPTION_RECORD, *LPEXCEPTION_RECORD; 
  1053.  
  1054. typedef struct _EXCEPTION_DEBUG_INFO {
  1055.   EXCEPTION_RECORD ExceptionRecord; 
  1056.   DWORD dwFirstChance; 
  1057. } EXCEPTION_DEBUG_INFO; 
  1058.  
  1059. typedef struct _EXIT_PROCESS_DEBUG_INFO { 
  1060.   DWORD dwExitCode; 
  1061. } EXIT_PROCESS_DEBUG_INFO; 
  1062.  
  1063. typedef struct _EXIT_THREAD_DEBUG_INFO { 
  1064.   DWORD dwExitCode; 
  1065. } EXIT_THREAD_DEBUG_INFO; 
  1066.  
  1067. typedef struct _LOAD_DLL_DEBUG_INFO { 
  1068.   HANDLE hFile; 
  1069.   LPVOID lpBaseOfDll; 
  1070.   DWORD  dwDebugInfoFileOffset; 
  1071.   DWORD  nDebugInfoSize; 
  1072.   LPVOID lpImageName; 
  1073.   WORD fUnicode; 
  1074. } LOAD_DLL_DEBUG_INFO; 
  1075.  
  1076. typedef struct _UNLOAD_DLL_DEBUG_INFO { 
  1077.   LPVOID lpBaseOfDll; 
  1078. } UNLOAD_DLL_DEBUG_INFO; 
  1079.  
  1080. typedef struct _OUTPUT_DEBUG_STRING_INFO { 
  1081.   LPSTR lpDebugStringData; 
  1082.   WORD  fUnicode; 
  1083.   WORD  nDebugStringLength; 
  1084. } OUTPUT_DEBUG_STRING_INFO; 
  1085.  
  1086. typedef struct _RIP_INFO { 
  1087.   DWORD  dwError; 
  1088.   DWORD  dwType; 
  1089. } RIP_INFO; 
  1090.  
  1091. typedef struct _DEBUG_EVENT { 
  1092.   DWORD dwDebugEventCode; 
  1093.   DWORD dwProcessId; 
  1094.   DWORD dwThreadId; 
  1095.   union { 
  1096.     EXCEPTION_DEBUG_INFO Exception; 
  1097.     CREATE_THREAD_DEBUG_INFO CreateThread; 
  1098.     CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; 
  1099.     EXIT_THREAD_DEBUG_INFO ExitThread; 
  1100.     EXIT_PROCESS_DEBUG_INFO ExitProcess; 
  1101.     LOAD_DLL_DEBUG_INFO LoadDll; 
  1102.     UNLOAD_DLL_DEBUG_INFO UnloadDll; 
  1103.     OUTPUT_DEBUG_STRING_INFO DebugString; 
  1104.     RIP_INFO RipInfo; 
  1105.   } u; 
  1106. } DEBUG_EVENT, *LPDEBUG_EVENT; 
  1107.  
  1108. typedef struct tagDEBUGHOOKINFO {
  1109.   DWORD  idThread; 
  1110.   DWORD  idThreadInstaller; 
  1111.   LPARAM lParam; 
  1112.   WPARAM wParam; 
  1113.   int    code; 
  1114. } DEBUGHOOKINFO; 
  1115.  
  1116. typedef struct tagDELETEITEMSTRUCT { 
  1117.   UINT CtlType; 
  1118.   UINT CtlID; 
  1119.   UINT itemID; 
  1120.   HWND hwndItem; 
  1121.   UINT itemData; 
  1122. } DELETEITEMSTRUCT; 
  1123.  
  1124. typedef struct _DEV_BROADCAST_HDR {
  1125.   ULONG dbch_size; 
  1126.   ULONG dbch_devicetype; 
  1127.   ULONG dbch_reserved; 
  1128. } DEV_BROADCAST_HDR;
  1129. typedef DEV_BROADCAST_HDR *PDEV_BROADCAST_HDR;
  1130.  
  1131. typedef struct _DEV_BROADCAST_OEM {
  1132.   ULONG dbco_size; 
  1133.   ULONG dbco_devicetype; 
  1134.   ULONG dbco_reserved; 
  1135.   ULONG dbco_identifier; 
  1136.   ULONG dbco_suppfunc; 
  1137. } DEV_BROADCAST_OEM;
  1138. typedef DEV_BROADCAST_OEM *PDEV_BROADCAST_OEM;
  1139.  
  1140. typedef struct _DEV_BROADCAST_PORT {
  1141.   ULONG dbcp_size; 
  1142.   ULONG dbcp_devicetype; 
  1143.   ULONG dbcp_reserved; 
  1144.   char dbcp_name[1]; 
  1145. } DEV_BROADCAST_PORT;
  1146. typedef DEV_BROADCAST_PORT *PDEV_BROADCAST_PORT;
  1147.  
  1148. struct _DEV_BROADCAST_USERDEFINED { 
  1149.   struct _DEV_BROADCAST_HDR dbud_dbh; 
  1150.   char  dbud_szName[1];
  1151.   BYTE  dbud_rgbUserDefined[1];
  1152. }; 
  1153.  
  1154. typedef struct _DEV_BROADCAST_VOLUME {
  1155.   ULONG dbcv_size; 
  1156.   ULONG dbcv_devicetype; 
  1157.   ULONG dbcv_reserved; 
  1158.   ULONG dbcv_unitmask; 
  1159.   USHORT dbcv_flags; 
  1160. } DEV_BROADCAST_VOLUME;
  1161. typedef DEV_BROADCAST_VOLUME *PDEV_BROADCAST_VOLUME;
  1162.  
  1163. typedef struct _devicemode {  
  1164.   BCHAR  dmDeviceName[CCHDEVICENAME]; 
  1165.   WORD   dmSpecVersion; 
  1166.   WORD   dmDriverVersion; 
  1167.   WORD   dmSize; 
  1168.   WORD   dmDriverExtra; 
  1169.   DWORD  dmFields; 
  1170.   short  dmOrientation; 
  1171.   short  dmPaperSize; 
  1172.   short  dmPaperLength; 
  1173.   short  dmPaperWidth; 
  1174.   short  dmScale; 
  1175.   short  dmCopies; 
  1176.   short  dmDefaultSource; 
  1177.   short  dmPrintQuality; 
  1178.   short  dmColor; 
  1179.   short  dmDuplex; 
  1180.   short  dmYResolution; 
  1181.   short  dmTTOption; 
  1182.   short  dmCollate; 
  1183.   BCHAR  dmFormName[CCHFORMNAME]; 
  1184.   WORD  dmLogPixels; 
  1185.   DWORD  dmBitsPerPel; 
  1186.   DWORD  dmPelsWidth; 
  1187.   DWORD  dmPelsHeight; 
  1188.   DWORD  dmDisplayFlags; 
  1189.   DWORD  dmDisplayFrequency; 
  1190.   DWORD  dmICMMethod;         
  1191.   DWORD  dmICMIntent;         
  1192.   DWORD  dmMediaType;         
  1193.   DWORD  dmDitherType;        
  1194.   DWORD  dmICCManufacturer;   
  1195.   DWORD  dmICCModel;          
  1196. } DEVMODE, *PDEVMODE, *NPDEVMODE, *LPDEVMODE;
  1197.  
  1198. #ifdef UNICODE
  1199. typedef DEVMODE DEVMODEW;
  1200. typedef PDEVMODE PDEVMODEW;
  1201. typedef NPDEVMODE NPDEVMODEW;
  1202. typedef LPDEVMODE LPDEVMODEW;
  1203. #else
  1204. typedef DEVMODE DEVMODEA;
  1205. typedef PDEVMODE PDEVMODEA;
  1206. typedef NPDEVMODE NPDEVMODEA;
  1207. typedef LPDEVMODE LPDEVMODEA;
  1208. #endif /* UNICODE */
  1209.  
  1210. typedef struct tagDEVNAMES { 
  1211.   WORD wDriverOffset; 
  1212.   WORD wDeviceOffset; 
  1213.   WORD wOutputOffset; 
  1214.   WORD wDefault; 
  1215. } DEVNAMES, *LPDEVNAMES; 
  1216.  
  1217. typedef struct tagDIBSECTION { 
  1218.   BITMAP              dsBm; 
  1219.   BITMAPINFOHEADER    dsBmih; 
  1220.   DWORD               dsBitfields[3]; 
  1221.   HANDLE              dshSection; 
  1222.   DWORD               dsOffset; 
  1223. } DIBSECTION; 
  1224.  
  1225. typedef struct _LARGE_INTEGER { 
  1226.   DWORD LowPart; 
  1227.   LONG  HighPart; 
  1228. } LARGE_INTEGER, *PLARGE_INTEGER; 
  1229.  
  1230. typedef struct _DISK_GEOMETRY { 
  1231.   LARGE_INTEGER  Cylinders; 
  1232.   MEDIA_TYPE  MediaType; 
  1233.   DWORD  TracksPerCylinder; 
  1234.   DWORD  SectorsPerTrack; 
  1235.   DWORD  BytesPerSector; 
  1236. } DISK_GEOMETRY ; 
  1237.  
  1238. typedef struct _DISK_PERFORMANCE { 
  1239.   LARGE_INTEGER BytesRead; 
  1240.   LARGE_INTEGER BytesWritten; 
  1241.   LARGE_INTEGER ReadTime; 
  1242.   LARGE_INTEGER WriteTime; 
  1243.   DWORD ReadCount; 
  1244.   DWORD WriteCount; 
  1245.   DWORD QueueDepth; 
  1246. } DISK_PERFORMANCE ; 
  1247.  
  1248. typedef struct tagDLGITEMTEMPLATE { 
  1249.   DWORD style; 
  1250.   DWORD dwExtendedStyle; 
  1251.   short x; 
  1252.   short y; 
  1253.   short cx; 
  1254.   short cy; 
  1255.   WORD  id; 
  1256. } PACKED DLGITEMTEMPLATE, *LPDLGITEMTEMPLATE, *PDLGITEMTEMPLATE;
  1257.  
  1258. typedef struct tagDLGTEMPLATE { 
  1259.   DWORD style; 
  1260.   DWORD dwExtendedStyle; 
  1261.   WORD  cdit; 
  1262.   short x; 
  1263.   short y; 
  1264.   short cx; 
  1265.   short cy; 
  1266. } PACKED DLGTEMPLATE, *LPDLGTEMPLATE, *LPCDLGTEMPLATE;
  1267.  
  1268. typedef struct _DOC_INFO_1 { 
  1269.   LPTSTR pDocName; 
  1270.   LPTSTR pOutputFile; 
  1271.   LPTSTR pDatatype; 
  1272. } DOC_INFO_1; 
  1273.  
  1274. typedef struct _DOC_INFO_2 { 
  1275.   LPTSTR pDocName; 
  1276.   LPTSTR pOutputFile; 
  1277.   LPTSTR pDatatype; 
  1278.   DWORD  dwMode; 
  1279.   DWORD  JobId; 
  1280. } DOC_INFO_2; 
  1281.  
  1282. typedef struct {    
  1283.   int     cbSize; 
  1284.   LPCTSTR lpszDocName; 
  1285.   LPCTSTR lpszOutput; 
  1286.   LPCTSTR lpszDatatype; 
  1287.   DWORD   fwType;       
  1288. } DOCINFO, *LPDOCINFO; 
  1289.  
  1290. typedef struct { 
  1291.   UINT uNotification; 
  1292.   HWND hWnd; 
  1293.   POINT ptCursor; 
  1294. } DRAGLISTINFO, *LPDRAGLISTINFO; 
  1295.  
  1296. typedef struct tagDRAWITEMSTRUCT { 
  1297.   UINT  CtlType; 
  1298.   UINT  CtlID; 
  1299.   UINT  itemID; 
  1300.   UINT  itemAction; 
  1301.   UINT  itemState; 
  1302.   HWND  hwndItem; 
  1303.   HDC   hDC; 
  1304.   RECT  rcItem; 
  1305.   DWORD itemData; 
  1306. } DRAWITEMSTRUCT, *LPDRAWITEMSTRUCT, *PDRAWITEMSTRUCT; 
  1307.  
  1308. typedef struct { 
  1309.   UINT cbSize;         
  1310.   int  iTabLength;     
  1311.   int  iLeftMargin;    
  1312.   int  iRightMargin;   
  1313.   UINT uiLengthDrawn;  
  1314. } DRAWTEXTPARAMS, *LPDRAWTEXTPARAMS; 
  1315.  
  1316. typedef struct _PARTITION_INFORMATION { 
  1317.   BYTE PartitionType; 
  1318.   BOOLEAN BootIndicator; 
  1319.   BOOLEAN RecognizedPartition; 
  1320.   BOOLEAN RewritePartition; 
  1321.   LARGE_INTEGER StartingOffset; 
  1322.   LARGE_INTEGER PartitionLength; 
  1323.   LARGE_INTEGER HiddenSectors; 
  1324. } PARTITION_INFORMATION ; 
  1325.  
  1326. typedef struct _DRIVE_LAYOUT_INFORMATION { 
  1327.   DWORD  PartitionCount; 
  1328.   DWORD  Signature; 
  1329.   PARTITION_INFORMATION  PartitionEntry[1]; 
  1330. } DRIVE_LAYOUT_INFORMATION; 
  1331.  
  1332. typedef struct _DRIVER_INFO_1 { 
  1333.   LPTSTR pName; 
  1334. } DRIVER_INFO_1; 
  1335.  
  1336. typedef struct _DRIVER_INFO_2 { 
  1337.   DWORD  cVersion; 
  1338.   LPTSTR pName; 
  1339.   LPTSTR pEnvironment; 
  1340.   LPTSTR pDriverPath; 
  1341.   LPTSTR pDataFile; 
  1342.   LPTSTR pConfigFile; 
  1343. } DRIVER_INFO_2; 
  1344.  
  1345. typedef struct _DRIVER_INFO_3 { 
  1346.   DWORD  cVersion; 
  1347.   LPTSTR pName; 
  1348.   LPTSTR pEnvironment; 
  1349.   LPTSTR pDriverPath; 
  1350.   LPTSTR pDataFile; 
  1351.   LPTSTR pConfigFile; 
  1352.   LPTSTR pHelpFile; 
  1353.   LPTSTR pDependentFiles; 
  1354.   LPTSTR pMonitorName; 
  1355.   LPTSTR pDefaultDataType; 
  1356. } DRIVER_INFO_3; 
  1357.  
  1358. typedef struct _editstream { 
  1359.   DWORD dwCookie; 
  1360.   DWORD dwError; 
  1361.   EDITSTREAMCALLBACK pfnCallback; 
  1362. } EDITSTREAM; 
  1363.  
  1364. typedef struct tagEMR
  1365. {
  1366.   DWORD iType; 
  1367.   DWORD nSize;
  1368. } EMR, *PEMR; 
  1369.  
  1370. typedef struct tagEMRANGLEARC
  1371. {
  1372.   EMR     emr;
  1373.   POINTL  ptlCenter; 
  1374.   DWORD   nRadius;
  1375.   FLOAT   eStartAngle;
  1376.   FLOAT   eSweepAngle;
  1377. } EMRANGLEARC, *PEMRANGLEARC; 
  1378.  
  1379. typedef struct tagEMRARC
  1380. {
  1381.   EMR    emr; 
  1382.   RECTL  rclBox;
  1383.   POINTL ptlStart;
  1384.   POINTL ptlEnd;
  1385. } EMRARC,   *PEMRARC,
  1386.     EMRARCTO, *PEMRARCTO,
  1387.     EMRCHORD, *PEMRCHORD,
  1388.     EMRPIE,   *PEMRPIE; 
  1389.  
  1390. typedef struct  _XFORM
  1391. {
  1392.   FLOAT   eM11;
  1393.   FLOAT   eM12;
  1394.   FLOAT   eM21;
  1395.   FLOAT   eM22;
  1396.   FLOAT   eDx;
  1397.   FLOAT   eDy;
  1398. } XFORM, *PXFORM, *LPXFORM;
  1399.  
  1400. typedef struct tagEMRBITBLT
  1401. {
  1402.   EMR      emr; 
  1403.   RECTL    rclBounds; 
  1404.   LONG     xDest; 
  1405.   LONG     yDest; 
  1406.   LONG     cxDest; 
  1407.   LONG     cyDest; 
  1408.   DWORD    dwRop; 
  1409.   LONG     xSrc; 
  1410.   LONG     ySrc; 
  1411.   XFORM    xformSrc; 
  1412.   COLORREF crBkColorSrc; 
  1413.   DWORD    iUsageSrc; 
  1414.   DWORD    offBmiSrc; 
  1415.   DWORD    offBitsSrc; 
  1416.   DWORD    cbBitsSrc; 
  1417. } EMRBITBLT, *PEMRBITBLT; 
  1418.  
  1419. typedef struct tagLOGBRUSH { 
  1420.   UINT     lbStyle; 
  1421.   COLORREF lbColor; 
  1422.   LONG     lbHatch; 
  1423. } LOGBRUSH; 
  1424.  
  1425. typedef struct tagEMRCREATEBRUSHINDIRECT
  1426. {
  1427.   EMR      emr; 
  1428.   DWORD    ihBrush; 
  1429.   LOGBRUSH lb; 
  1430. } EMRCREATEBRUSHINDIRECT, *PEMRCREATEBRUSHINDIRECT; 
  1431.  
  1432. typedef LONG LCSCSTYPE;
  1433. typedef LONG LCSGAMUTMATCH;
  1434.  
  1435. typedef struct tagLOGCOLORSPACE {
  1436.   DWORD         lcsSignature; 
  1437.   DWORD         lcsVersion; 
  1438.   DWORD         lcsSize; 
  1439.  
  1440.   LCSCSTYPE     lcsCSType; 
  1441.   LCSGAMUTMATCH lcsIntent; 
  1442.   CIEXYZTRIPLE  lcsEndpoints;
  1443.   DWORD         lcsGammaRed;
  1444.   DWORD         lcsGammaGreen; 
  1445.   DWORD         lcsGammaBlue;
  1446.   TCHAR         lcsFilename[MAX_PATH]; 
  1447. } LOGCOLORSPACE, *LPLOGCOLORSPACE; 
  1448.  
  1449. typedef struct tagEMRCREATECOLORSPACE
  1450. {
  1451.   EMR           emr; 
  1452.   DWORD         ihCS; 
  1453.   LOGCOLORSPACE lcs; 
  1454. } EMRCREATECOLORSPACE, *PEMRCREATECOLORSPACE; 
  1455.  
  1456. typedef struct tagEMRCREATEDIBPATTERNBRUSHPT
  1457. {
  1458.   EMR   emr; 
  1459.   DWORD ihBrush; 
  1460.   DWORD iUsage; 
  1461.   DWORD offBmi; 
  1462.   DWORD cbBmi; 
  1463.   DWORD offBits; 
  1464.   DWORD cbBits; 
  1465. } EMRCREATEDIBPATTERNBRUSHPT, *PEMRCREATEDIBPATTERNBRUSHPT; 
  1466.  
  1467. typedef struct tagEMRCREATEMONOBRUSH
  1468. {
  1469.   EMR   emr; 
  1470.   DWORD ihBrush; 
  1471.   DWORD iUsage; 
  1472.   DWORD offBmi; 
  1473.   DWORD cbBmi; 
  1474.   DWORD offBits; 
  1475.   DWORD cbBits; 
  1476. } EMRCREATEMONOBRUSH, *PEMRCREATEMONOBRUSH; 
  1477.  
  1478. typedef struct tagPALETTEENTRY { 
  1479.   BYTE peRed; 
  1480.   BYTE peGreen; 
  1481.   BYTE peBlue; 
  1482.   BYTE peFlags; 
  1483. } PACKED PALETTEENTRY, *LPPALETTEENTRY, *PPALETTEENTRY; 
  1484.  
  1485. typedef struct tagLOGPALETTE { 
  1486.   WORD         palVersion; 
  1487.   WORD         palNumEntries; 
  1488.   PALETTEENTRY palPalEntry[1]; 
  1489. } PACKED LOGPALETTE, *LPLOGPALETTE, *PLOGPALETTE; 
  1490.  
  1491. typedef struct tagEMRCREATEPALETTE
  1492. {
  1493.   EMR        emr; 
  1494.   DWORD      ihPal; 
  1495.   LOGPALETTE lgpl; 
  1496. } EMRCREATEPALETTE, *PEMRCREATEPALETTE; 
  1497.  
  1498. typedef struct tagLOGPEN { 
  1499.   UINT     lopnStyle; 
  1500.   POINT    lopnWidth; 
  1501.   COLORREF lopnColor; 
  1502. } LOGPEN; 
  1503.  
  1504. typedef struct tagEMRCREATEPEN
  1505. {
  1506.   EMR    emr; 
  1507.   DWORD  ihPen; 
  1508.   LOGPEN lopn; 
  1509. } EMRCREATEPEN, *PEMRCREATEPEN; 
  1510.  
  1511. typedef struct tagEMRELLIPSE
  1512. {
  1513.   EMR   emr; 
  1514.   RECTL rclBox; 
  1515. } EMRELLIPSE,  *PEMRELLIPSE,
  1516.     EMRRECTANGLE, *PEMRRECTANGLE; 
  1517.  
  1518. typedef struct tagEMREOF
  1519. {
  1520.   EMR     emr;
  1521.   DWORD   nPalEntries; 
  1522.   DWORD   offPalEntries; 
  1523.   DWORD   nSizeLast; 
  1524. } EMREOF, *PEMREOF; 
  1525.  
  1526. typedef struct tagEMREXCLUDECLIPRECT
  1527. {
  1528.   EMR   emr;      
  1529.   RECTL rclClip;  
  1530. } EMREXCLUDECLIPRECT,   *PEMREXCLUDECLIPRECT,
  1531.     EMRINTERSECTCLIPRECT, *PEMRINTERSECTCLIPRECT; 
  1532.  
  1533. typedef struct tagPANOSE { 
  1534.   BYTE bFamilyType; 
  1535.   BYTE bSerifStyle; 
  1536.   BYTE bWeight; 
  1537.   BYTE bProportion; 
  1538.   BYTE bContrast; 
  1539.   BYTE bStrokeVariation; 
  1540.   BYTE bArmStyle; 
  1541.   BYTE bLetterform; 
  1542.   BYTE bMidline; 
  1543.   BYTE bXHeight; 
  1544. } PANOSE; 
  1545.  
  1546. typedef struct tagEXTLOGFONT { 
  1547.     LOGFONT elfLogFont; 
  1548.     BCHAR    elfFullName[LF_FULLFACESIZE]; 
  1549.     BCHAR    elfStyle[LF_FACESIZE]; 
  1550.     DWORD   elfVersion; 
  1551.     DWORD   elfStyleSize; 
  1552.     DWORD   elfMatch; 
  1553.     DWORD   elfReserved; 
  1554.     BYTE    elfVendorId[ELF_VENDOR_SIZE]; 
  1555.     DWORD   elfCulture; 
  1556.     PANOSE  elfPanose; 
  1557. } EXTLOGFONT; 
  1558.  
  1559. typedef struct tagEMREXTCREATEFONTINDIRECTW
  1560. {
  1561.   EMR         emr; 
  1562.   DWORD       ihFont; 
  1563.   EXTLOGFONT  elfw; 
  1564. } EMREXTCREATEFONTINDIRECTW, *PEMREXTCREATEFONTINDIRECTW; 
  1565.  
  1566. typedef struct tagEXTLOGPEN { 
  1567.   UINT     elpPenStyle; 
  1568.   UINT     elpWidth; 
  1569.   UINT     elpBrushStyle; 
  1570.   COLORREF elpColor; 
  1571.   LONG     elpHatch; 
  1572.   DWORD    elpNumEntries; 
  1573.   DWORD    elpStyleEntry[1]; 
  1574. } EXTLOGPEN; 
  1575.  
  1576. typedef struct tagEMREXTCREATEPEN
  1577. {
  1578.   EMR       emr; 
  1579.   DWORD     ihPen; 
  1580.   DWORD     offBmi; 
  1581.   DWORD     cbBmi; 
  1582.   DWORD     offBits; 
  1583.   DWORD     cbBits; 
  1584.   EXTLOGPEN elp; 
  1585. } EMREXTCREATEPEN, *PEMREXTCREATEPEN; 
  1586.  
  1587. typedef struct tagEMREXTFLOODFILL
  1588. {
  1589.   EMR     emr; 
  1590.   POINTL  ptlStart; 
  1591.   COLORREF crColor; 
  1592.   DWORD   iMode; 
  1593. } EMREXTFLOODFILL, *PEMREXTFLOODFILL; 
  1594.  
  1595. typedef struct tagEMREXTSELECTCLIPRGN
  1596. {
  1597.   EMR   emr; 
  1598.   DWORD cbRgnData; 
  1599.   DWORD iMode; 
  1600.   BYTE  RgnData[1]; 
  1601. } EMREXTSELECTCLIPRGN, *PEMREXTSELECTCLIPRGN; 
  1602.  
  1603. typedef struct tagEMRTEXT 
  1604. {
  1605.   POINTL ptlReference; 
  1606.   DWORD  nChars; 
  1607.   DWORD  offString; 
  1608.   DWORD  fOptions; 
  1609.   RECTL  rcl; 
  1610.   DWORD  offDx; 
  1611. } EMRTEXT, *PEMRTEXT; 
  1612.  
  1613. typedef struct tagEMREXTTEXTOUTA
  1614. {
  1615.   EMR     emr; 
  1616.   RECTL   rclBounds; 
  1617.   DWORD   iGraphicsMode; 
  1618.   FLOAT   exScale; 
  1619.   FLOAT   eyScale;
  1620.   EMRTEXT emrtext; 
  1621. } EMREXTTEXTOUTA, *PEMREXTTEXTOUTA,
  1622.     EMREXTTEXTOUTW, *PEMREXTTEXTOUTW; 
  1623.  
  1624. typedef struct tagEMRFILLPATH
  1625. {
  1626.   EMR   emr; 
  1627.   RECTL rclBounds; 
  1628. } EMRFILLPATH,          *PEMRFILLPATH,
  1629.     EMRSTROKEANDFILLPATH, *PEMRSTROKEANDFILLPATH,
  1630.     EMRSTROKEPATH,        *PEMRSTROKEPATH; 
  1631.  
  1632. typedef struct tagEMRFILLRGN
  1633. {
  1634.   EMR   emr; 
  1635.   RECTL rclBounds; 
  1636.   DWORD cbRgnData; 
  1637.   DWORD ihBrush; 
  1638.   BYTE  RgnData[1]; 
  1639. } EMRFILLRGN, *PEMRFILLRGN; 
  1640.  
  1641. typedef struct tagEMRFORMAT { 
  1642.   DWORD   dSignature; 
  1643.   DWORD   nVersion; 
  1644.   DWORD   cbData; 
  1645.   DWORD   offData; 
  1646. } EMRFORMAT; 
  1647.  
  1648. typedef struct tagSIZE { 
  1649.   LONG cx; 
  1650.   LONG cy; 
  1651. } SIZE, *PSIZE, *LPSIZE, SIZEL, *PSIZEL, *LPSIZEL; 
  1652.  
  1653. typedef struct tagEMRFRAMERGN
  1654. {
  1655.   EMR   emr; 
  1656.   RECTL rclBounds; 
  1657.   DWORD cbRgnData; 
  1658.   DWORD ihBrush; 
  1659.   SIZEL szlStroke; 
  1660.   BYTE  RgnData[1]; 
  1661. } EMRFRAMERGN, *PEMRFRAMERGN; 
  1662.  
  1663. typedef struct tagEMRGDICOMMENT
  1664. {
  1665.   EMR   emr; 
  1666.   DWORD cbData; 
  1667.   BYTE  Data[1]; 
  1668. } EMRGDICOMMENT, *PEMRGDICOMMENT; 
  1669.  
  1670. typedef struct tagEMRINVERTRGN
  1671. {
  1672.   EMR   emr; 
  1673.   RECTL rclBounds; 
  1674.   DWORD cbRgnData; 
  1675.   BYTE  RgnData[1]; 
  1676. } EMRINVERTRGN, *PEMRINVERTRGN,
  1677.     EMRPAINTRGN,  *PEMRPAINTRGN; 
  1678.  
  1679. typedef struct tagEMRLINETO
  1680. {
  1681.   EMR    emr; 
  1682.   POINTL ptl; 
  1683. } EMRLINETO,   *PEMRLINETO,
  1684.     EMRMOVETOEX, *PEMRMOVETOEX; 
  1685.  
  1686. typedef struct tagEMRMASKBLT
  1687. {
  1688.   EMR     emr; 
  1689.   RECTL   rclBounds; 
  1690.   LONG    xDest; 
  1691.   LONG    yDest; 
  1692.   LONG    cxDest; 
  1693.   LONG    cyDest; 
  1694.   DWORD   dwRop; 
  1695.   LONG    xSrc; 
  1696.   LONG    ySrc; 
  1697.   XFORM   xformSrc; 
  1698.   COLORREF crBkColorSrc; 
  1699.   DWORD   iUsageSrc; 
  1700.   DWORD   offBmiSrc; 
  1701.   DWORD   cbBmiSrc; 
  1702.   DWORD   offBitsSrc; 
  1703.   DWORD   cbBitsSrc; 
  1704.   LONG    xMask; 
  1705.   LONG    yMask; 
  1706.   DWORD   iUsageMask; 
  1707.   DWORD   offBmiMask; 
  1708.   DWORD   cbBmiMask; 
  1709.   DWORD   offBitsMask; 
  1710.   DWORD   cbBitsMask; 
  1711. } EMRMASKBLT, *PEMRMASKBLT; 
  1712.  
  1713. typedef struct tagEMRMODIFYWORLDTRANSFORM
  1714. {
  1715.   EMR   emr; 
  1716.   XFORM xform; 
  1717.   DWORD iMode; 
  1718. } EMRMODIFYWORLDTRANSFORM, *PEMRMODIFYWORLDTRANSFORM; 
  1719.  
  1720. typedef struct tagEMROFFSETCLIPRGN
  1721. {
  1722.   EMR    emr; 
  1723.   POINTL ptlOffset; 
  1724. } EMROFFSETCLIPRGN, *PEMROFFSETCLIPRGN; 
  1725.  
  1726. typedef struct tagEMRPLGBLT
  1727. {
  1728.   EMR      emr; 
  1729.   RECTL    rclBounds; 
  1730.   POINTL   aptlDest[3]; 
  1731.   LONG    xSrc; 
  1732.   LONG    ySrc; 
  1733.   LONG     cxSrc; 
  1734.   LONG     cySrc; 
  1735.   XFORM   xformSrc; 
  1736.   COLORREF crBkColorSrc; 
  1737.   DWORD    iUsageSrc; 
  1738.   DWORD    offBmiSrc; 
  1739.   DWORD   cbBmiSrc; 
  1740.   DWORD   offBitsSrc; 
  1741.   DWORD   cbBitsSrc; 
  1742.   LONG    xMask;
  1743.   LONG    yMask; 
  1744.   DWORD   iUsageMask; 
  1745.   DWORD   offBmiMask; 
  1746.   DWORD   cbBmiMask;
  1747.   DWORD   offBitsMask;
  1748.   DWORD   cbBitsMask;
  1749. } EMRPLGBLT, *PEMRPLGBLT; 
  1750.  
  1751. typedef struct tagEMRPOLYDRAW
  1752. {
  1753.   EMR    emr; 
  1754.   RECTL  rclBounds; 
  1755.   DWORD  cptl; 
  1756.   POINTL aptl[1]; 
  1757.   BYTE   abTypes[1]; 
  1758. } EMRPOLYDRAW, *PEMRPOLYDRAW; 
  1759.  
  1760. typedef struct tagEMRPOLYDRAW16
  1761. {
  1762.   EMR    emr; 
  1763.   RECTL  rclBounds; 
  1764.   DWORD  cpts; 
  1765.   POINTS apts[1]; 
  1766.   BYTE   abTypes[1]; 
  1767. } EMRPOLYDRAW16, *PEMRPOLYDRAW16; 
  1768.  
  1769. typedef struct tagEMRPOLYLINE
  1770. {
  1771.   EMR    emr;
  1772.   RECTL  rclBounds; 
  1773.   DWORD  cptl; 
  1774.   POINTL aptl[1]; 
  1775. } EMRPOLYLINE,     *PEMRPOLYLINE,
  1776.     EMRPOLYBEZIER,   *PEMRPOLYBEZIER,
  1777.     EMRPOLYGON,      *PEMRPOLYGON,
  1778.     EMRPOLYBEZIERTO, *PEMRPOLYBEZIERTO,
  1779.     EMRPOLYLINETO,   *PEMRPOLYLINETO; 
  1780.  
  1781. typedef struct tagEMRPOLYLINE16
  1782. {
  1783.   EMR    emr; 
  1784.   RECTL  rclBounds; 
  1785.   DWORD  cpts; 
  1786.   POINTL apts[1]; 
  1787. } EMRPOLYLINE16,     *PEMRPOLYLINE16,
  1788.     EMRPOLYBEZIER16,   *PEMRPOLYBEZIER16,
  1789.     EMRPOLYGON16,      *PEMRPOLYGON16,
  1790.     EMRPOLYBEZIERTO16, *PEMRPOLYBEZIERTO16,
  1791.     EMRPOLYLINETO16,   *PEMRPOLYLINETO16; 
  1792.  
  1793. typedef struct tagEMRPOLYPOLYLINE
  1794. {
  1795.   EMR     emr; 
  1796.   RECTL   rclBounds; 
  1797.   DWORD   nPolys; 
  1798.   DWORD   cptl; 
  1799.   DWORD   aPolyCounts[1]; 
  1800.   POINTL  aptl[1]; 
  1801. } EMRPOLYPOLYLINE, *PEMRPOLYPOLYLINE,
  1802.     EMRPOLYPOLYGON,  *PEMRPOLYPOLYGON; 
  1803.  
  1804. typedef struct tagEMRPOLYPOLYLINE16
  1805. {
  1806.   EMR     emr; 
  1807.   RECTL   rclBounds;
  1808.   DWORD   nPolys; 
  1809.   DWORD   cpts; 
  1810.   DWORD   aPolyCounts[1]; 
  1811.   POINTS  apts[1]; 
  1812. } EMRPOLYPOLYLINE16, *PEMRPOLYPOLYLINE16,
  1813.     EMRPOLYPOLYGON16,  *PEMRPOLYPOLYGON16; 
  1814.  
  1815. typedef struct tagEMRPOLYTEXTOUTA
  1816. {
  1817.   EMR     emr; 
  1818.   RECTL   rclBounds; 
  1819.   DWORD   iGraphicsMode; 
  1820.   FLOAT   exScale; 
  1821.   FLOAT   eyScale; 
  1822.   LONG    cStrings; 
  1823.   EMRTEXT aemrtext[1]; 
  1824. } EMRPOLYTEXTOUTA, *PEMRPOLYTEXTOUTA,
  1825.     EMRPOLYTEXTOUTW, *PEMRPOLYTEXTOUTW; 
  1826.  
  1827. typedef struct tagEMRRESIZEPALETTE
  1828. {
  1829.   EMR   emr; 
  1830.   DWORD ihPal; 
  1831.   DWORD cEntries; 
  1832. } EMRRESIZEPALETTE, *PEMRRESIZEPALETTE; 
  1833.  
  1834. typedef struct tagEMRRESTOREDC
  1835. {
  1836.   EMR  emr; 
  1837.   LONG iRelative; 
  1838. } EMRRESTOREDC, *PEMRRESTOREDC; 
  1839.  
  1840. typedef struct tagEMRROUNDRECT
  1841. {
  1842.   EMR   emr; 
  1843.   RECTL rclBox; 
  1844.   SIZEL szlCorner; 
  1845. } EMRROUNDRECT, *PEMRROUNDRECT; 
  1846.  
  1847. typedef struct tagEMRSCALEVIEWPORTEXTEX
  1848. {
  1849.   EMR  emr; 
  1850.   LONG xNum; 
  1851.   LONG xDenom; 
  1852.   LONG yNum; 
  1853.   LONG yDenom; 
  1854. } EMRSCALEVIEWPORTEXTEX, *PEMRSCALEVIEWPORTEXTEX, 
  1855.     EMRSCALEWINDOWEXTEX,   *PEMRSCALEWINDOWEXTEX; 
  1856.  
  1857. typedef struct tagEMRSELECTCOLORSPACE 
  1858.   EMR     emr; 
  1859.   DWORD   ihCS; 
  1860. } EMRSELECTCOLORSPACE, *PEMRSELECTCOLORSPACE,
  1861.     EMRDELETECOLORSPACE, *PEMRDELETECOLORSPACE; 
  1862. typedef struct tagEMRSELECTOBJECT
  1863. {
  1864.   EMR   emr; 
  1865.   DWORD ihObject;
  1866. } EMRSELECTOBJECT, *PEMRSELECTOBJECT,
  1867.     EMRDELETEOBJECT, *PEMRDELETEOBJECT; 
  1868.  
  1869. typedef struct tagEMRSELECTPALETTE 
  1870. {
  1871.   EMR   emr; 
  1872.   DWORD ihPal; 
  1873. } EMRSELECTPALETTE, *PEMRSELECTPALETTE; 
  1874.  
  1875. typedef struct tagEMRSETARCDIRECTION
  1876. {
  1877.   EMR   emr; 
  1878.   DWORD iArcDirection;
  1879. } EMRSETARCDIRECTION, *PEMRSETARCDIRECTION; 
  1880.  
  1881. typedef struct tagEMRSETTEXTCOLOR
  1882. {
  1883.   EMR      emr; 
  1884.   COLORREF crColor; 
  1885. } EMRSETBKCOLOR,   *PEMRSETBKCOLOR,
  1886.     EMRSETTEXTCOLOR, *PEMRSETTEXTCOLOR; 
  1887.  
  1888. typedef struct tagEMRSETCOLORADJUSTMENT
  1889. {
  1890.   EMR  emr; 
  1891.   COLORADJUSTMENT ColorAdjustment; 
  1892. } EMRSETCOLORADJUSTMENT, *PEMRSETCOLORADJUSTMENT; 
  1893.  
  1894. typedef struct tagEMRSETDIBITSTODEVICE
  1895. {
  1896.   EMR   emr; 
  1897.   RECTL rclBounds; 
  1898.   LONG  xDest; 
  1899.   LONG  yDest; 
  1900.   LONG  xSrc; 
  1901.   LONG  ySrc; 
  1902.   LONG  cxSrc; 
  1903.   LONG  cySrc; 
  1904.   DWORD offBmiSrc; 
  1905.   DWORD cbBmiSrc; 
  1906.   DWORD offBitsSrc; 
  1907.   DWORD cbBitsSrc; 
  1908.   DWORD iUsageSrc; 
  1909.   DWORD iStartScan; 
  1910.   DWORD cScans; 
  1911. } EMRSETDIBITSTODEVICE, *PEMRSETDIBITSTODEVICE; 
  1912.  
  1913. typedef struct tagEMRSETMAPPERFLAGS
  1914. {
  1915.   EMR   emr; 
  1916.   DWORD dwFlags; 
  1917. } EMRSETMAPPERFLAGS, *PEMRSETMAPPERFLAGS; 
  1918.  
  1919. typedef struct tagEMRSETMITERLIMIT
  1920. {
  1921.   EMR   emr;
  1922.   FLOAT eMiterLimit; 
  1923. } EMRSETMITERLIMIT, *PEMRSETMITERLIMIT; 
  1924.  
  1925. typedef struct tagEMRSETPALETTEENTRIES
  1926. {
  1927.   EMR          emr; 
  1928.   DWORD        ihPal; 
  1929.   DWORD        iStart; 
  1930.   DWORD        cEntries; 
  1931.   PALETTEENTRY aPalEntries[1]; 
  1932. } EMRSETPALETTEENTRIES, *PEMRSETPALETTEENTRIES; 
  1933.  
  1934. typedef struct tagEMRSETPIXELV
  1935. {
  1936.   EMR     emr; 
  1937.   POINTL  ptlPixel; 
  1938.   COLORREF crColor; 
  1939. } EMRSETPIXELV, *PEMRSETPIXELV; 
  1940.  
  1941. typedef struct tagEMRSETVIEWPORTEXTEX
  1942. {
  1943.   EMR   emr; 
  1944.   SIZEL szlExtent; 
  1945. } EMRSETVIEWPORTEXTEX, *PEMRSETVIEWPORTEXTEX,
  1946.     EMRSETWINDOWEXTEX,   *PEMRSETWINDOWEXTEX; 
  1947.  
  1948. typedef struct tagEMRSETVIEWPORTORGEX
  1949. {
  1950.   EMR    emr; 
  1951.   POINTL ptlOrigin; 
  1952. } EMRSETVIEWPORTORGEX, *PEMRSETVIEWPORTORGEX,
  1953.     EMRSETWINDOWORGEX,   *PEMRSETWINDOWORGEX,
  1954.     EMRSETBRUSHORGEX,    *PEMRSETBRUSHORGEX; 
  1955.  
  1956. typedef struct tagEMRSETWORLDTRANSFORM
  1957. {
  1958.   EMR   emr; 
  1959.   XFORM xform; 
  1960. } EMRSETWORLDTRANSFORM, *PEMRSETWORLDTRANSFORM; 
  1961.  
  1962. typedef struct tagEMRSTRETCHBLT
  1963. {
  1964.   EMR      emr; 
  1965.   RECTL    rclBounds; 
  1966.   LONG     xDest; 
  1967.   LONG     yDest; 
  1968.   LONG     cxDest; 
  1969.   LONG     cyDest; 
  1970.   DWORD    dwRop; 
  1971.   LONG     xSrc; 
  1972.   LONG     ySrc; 
  1973.   XFORM    xformSrc; 
  1974.   COLORREF crBkColorSrc; 
  1975.   DWORD    iUsageSrc; 
  1976.   DWORD    offBmiSrc; 
  1977.   DWORD    cbBmiSrc; 
  1978.   DWORD    offBitsSrc; 
  1979.   DWORD    cbBitsSrc; 
  1980.   LONG     cxSrc; 
  1981.   LONG     cySrc; 
  1982. } EMRSTRETCHBLT, *PEMRSTRETCHBLT; 
  1983.  
  1984. typedef struct tagEMRSTRETCHDIBITS
  1985. {
  1986.   EMR   emr;
  1987.   RECTL rclBounds; 
  1988.   LONG  xDest; 
  1989.   LONG  yDest; 
  1990.   LONG  xSrc; 
  1991.   LONG  ySrc; 
  1992.   LONG  cxSrc; 
  1993.   LONG  cySrc;
  1994.   DWORD offBmiSrc;
  1995.   DWORD cbBmiSrc; 
  1996.   DWORD offBitsSrc; 
  1997.   DWORD cbBitsSrc; 
  1998.   DWORD iUsageSrc; 
  1999.   DWORD dwRop; 
  2000.   LONG  cxDest; 
  2001.   LONG  cyDest; 
  2002. } EMRSTRETCHDIBITS, *PEMRSTRETCHDIBITS; 
  2003.  
  2004. typedef struct tagABORTPATH 
  2005.   EMR emr; 
  2006. } EMRABORTPATH,      *PEMRABORTPATH,
  2007.     EMRBEGINPATH,      *PEMRBEGINPATH,
  2008.     EMRENDPATH,        *PEMRENDPATH,
  2009.     EMRCLOSEFIGURE,    *PEMRCLOSEFIGURE,
  2010.     EMRFLATTENPATH,    *PEMRFLATTENPATH,
  2011.     EMRWIDENPATH,      *PEMRWIDENPATH,
  2012.     EMRSETMETARGN,     *PEMRSETMETARGN,
  2013.     EMRSAVEDC,         *PEMRSAVEDC,
  2014.     EMRREALIZEPALETTE, *PEMRREALIZEPALETTE;
  2015.  
  2016. typedef struct tagEMRSELECTCLIPPATH
  2017. {
  2018.   EMR   emr; 
  2019.   DWORD iMode; 
  2020. } EMRSELECTCLIPPATH,    *PEMRSELECTCLIPPATH,
  2021.     EMRSETBKMODE,         *PEMRSETBKMODE,
  2022.     EMRSETMAPMODE,        *PEMRSETMAPMODE,
  2023.     EMRSETPOLYFILLMODE,   *PEMRSETPOLYFILLMODE,
  2024.     EMRSETROP2,           *PEMRSETROP2,
  2025.     EMRSETSTRETCHBLTMODE, *PEMRSETSTRETCHBLTMODE,
  2026.     EMRSETTEXTALIGN,      *PEMRSETTEXTALIGN,
  2027.     EMRENABLEICM,       *PEMRENABLEICM;
  2028.  
  2029. typedef struct tagNMHDR { 
  2030.   HWND hwndFrom; 
  2031.   UINT idFrom; 
  2032.   UINT code; 
  2033. } NMHDR, *PNMHDR, *LPNMHDR; 
  2034.  
  2035. typedef struct _encorrecttext { 
  2036.   NMHDR nmhdr;     
  2037.   CHARRANGE chrg;  
  2038.   WORD seltyp;     
  2039. } ENCORRECTTEXT; 
  2040.  
  2041. typedef struct _endropfiles { 
  2042.   NMHDR nmhdr; 
  2043.   HANDLE hDrop; 
  2044.   LONG cp; 
  2045.   WINBOOL fProtected; 
  2046. } ENDROPFILES; 
  2047.  
  2048. typedef struct {
  2049.   NMHDR nmhdr;        
  2050.   LONG cObjectCount;  
  2051.   LONG cch;           
  2052. } ENSAVECLIPBOARD;
  2053.  
  2054. typedef struct {
  2055.   NMHDR nmhdr;  
  2056.   LONG iob;     
  2057.   LONG lOper;   
  2058.   HRESULT hr;   
  2059. } ENOLEOPFAILED;
  2060.  
  2061. typedef struct tagENHMETAHEADER { 
  2062.   DWORD iType; 
  2063.   DWORD nSize; 
  2064.   RECTL rclBounds; 
  2065.   RECTL rclFrame; 
  2066.   DWORD dSignature; 
  2067.   DWORD nVersion; 
  2068.   DWORD nBytes; 
  2069.   DWORD nRecords; 
  2070.   WORD  nHandles; 
  2071.   WORD  sReserved; 
  2072.   DWORD nDescription; 
  2073.   DWORD offDescription; 
  2074.   DWORD nPalEntries; 
  2075.   SIZEL szlDevice; 
  2076.   SIZEL szlMillimeters; 
  2077. } ENHMETAHEADER, *LPENHMETAHEADER; 
  2078.  
  2079. typedef struct tagENHMETARECORD { 
  2080.   DWORD iType; 
  2081.   DWORD nSize; 
  2082.   DWORD dParm[1]; 
  2083. } ENHMETARECORD, *PENHMETARECORD, *LPENHMETARECORD; 
  2084.  
  2085. typedef struct _enprotected { 
  2086.   NMHDR nmhdr; 
  2087.   UINT msg; 
  2088.   WPARAM wParam; 
  2089.   LPARAM lParam; 
  2090.   CHARRANGE chrg; 
  2091. } ENPROTECTED; 
  2092.  
  2093. typedef struct _SERVICE_STATUS {
  2094.   DWORD dwServiceType; 
  2095.   DWORD dwCurrentState; 
  2096.   DWORD dwControlsAccepted; 
  2097.   DWORD dwWin32ExitCode; 
  2098.   DWORD dwServiceSpecificExitCode; 
  2099.   DWORD dwCheckPoint; 
  2100.   DWORD dwWaitHint; 
  2101. } SERVICE_STATUS, *LPSERVICE_STATUS; 
  2102.  
  2103. typedef struct _ENUM_SERVICE_STATUS { 
  2104.   LPTSTR lpServiceName; 
  2105.   LPTSTR lpDisplayName; 
  2106.   SERVICE_STATUS ServiceStatus; 
  2107. } ENUM_SERVICE_STATUS, *LPENUM_SERVICE_STATUS; 
  2108.  
  2109. typedef struct tagENUMLOGFONT { 
  2110.   LOGFONT elfLogFont; 
  2111.   BCHAR    elfFullName[LF_FULLFACESIZE]; 
  2112.   BCHAR    elfStyle[LF_FACESIZE]; 
  2113. } ENUMLOGFONT; 
  2114.  
  2115. typedef struct tagENUMLOGFONTEX {
  2116.   LOGFONT  elfLogFont;
  2117.   BCHAR  elfFullName[LF_FULLFACESIZE];
  2118.   BCHAR  elfStyle[LF_FACESIZE];
  2119.   BCHAR  elfScript[LF_FACESIZE];
  2120. } ENUMLOGFONTEX;
  2121.  
  2122. typedef struct _EVENTLOGRECORD {
  2123.   DWORD  Length; 
  2124.   DWORD  Reserved; 
  2125.   DWORD  RecordNumber; 
  2126.   DWORD  TimeGenerated; 
  2127.   DWORD  TimeWritten; 
  2128.   DWORD  EventID; 
  2129.   WORD   EventType; 
  2130.   WORD   NumStrings; 
  2131.   WORD   EventCategory; 
  2132.   WORD   ReservedFlags; 
  2133.   DWORD  ClosingRecordNumber; 
  2134.   DWORD  StringOffset; 
  2135.   DWORD  UserSidLength; 
  2136.   DWORD  UserSidOffset; 
  2137.   DWORD  DataLength; 
  2138.   DWORD  DataOffset; 
  2139.  
  2140. /*
  2141.   Then follow: 
  2142.   
  2143.   TCHAR SourceName[] 
  2144.   TCHAR Computername[] 
  2145.   SID   UserSid 
  2146.   TCHAR Strings[] 
  2147.   BYTE  Data[] 
  2148.   CHAR  Pad[] 
  2149.   DWORD Length; 
  2150. */
  2151.   
  2152. } EVENTLOGRECORD; 
  2153.  
  2154. typedef struct tagEVENTMSG {
  2155.   UINT  message; 
  2156.   UINT  paramL; 
  2157.   UINT  paramH; 
  2158.   DWORD time; 
  2159.   HWND  hwnd; 
  2160. } EVENTMSG; 
  2161.  
  2162. typedef struct _EXCEPTION_POINTERS { 
  2163.   PEXCEPTION_RECORD ExceptionRecord; 
  2164.   PCONTEXT ContextRecord; 
  2165. } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS; 
  2166.  
  2167. typedef struct _EXT_BUTTON { 
  2168.   WORD idCommand; 
  2169.   WORD idsHelp; 
  2170.   WORD fsStyle; 
  2171. } EXT_BUTTON, *LPEXT_BUTTON; 
  2172.  
  2173. typedef struct tagFILTERKEYS {   
  2174.   UINT  cbSize; 
  2175.   DWORD dwFlags; 
  2176.   DWORD iWaitMSec; 
  2177.   DWORD iDelayMSec; 
  2178.   DWORD iRepeatMSec; 
  2179.   DWORD iBounceMSec; 
  2180. } FILTERKEYS; 
  2181.  
  2182. typedef struct _FIND_NAME_BUFFER { 
  2183.   UCHAR length; 
  2184.   UCHAR access_control; 
  2185.   UCHAR frame_control; 
  2186.   UCHAR destination_addr[6]; 
  2187.   UCHAR source_addr[6]; 
  2188.   UCHAR routing_info[18]; 
  2189. } FIND_NAME_BUFFER; 
  2190.  
  2191. typedef struct _FIND_NAME_HEADER { 
  2192.   WORD  node_count; 
  2193.   UCHAR reserved; 
  2194.   UCHAR unique_group; 
  2195. } FIND_NAME_HEADER; 
  2196.  
  2197. typedef struct {   
  2198.   DWORD        lStructSize; 
  2199.   HWND         hwndOwner; 
  2200.   HINSTANCE    hInstance; 
  2201.   DWORD        Flags; 
  2202.   LPTSTR        lpstrFindWhat; 
  2203.   LPTSTR        lpstrReplaceWith; 
  2204.   WORD         wFindWhatLen; 
  2205.   WORD         wReplaceWithLen; 
  2206.   LPARAM        lCustData; 
  2207.   LPFRHOOKPROC lpfnHook; 
  2208.   LPCTSTR       lpTemplateName; 
  2209. } FINDREPLACE, *LPFINDREPLACE; 
  2210.  
  2211. typedef struct _findtext { 
  2212.   CHARRANGE chrg; 
  2213.   LPSTR lpstrText; 
  2214. } FINDTEXT; 
  2215.  
  2216. typedef struct _findtextex { 
  2217.   CHARRANGE chrg;  
  2218.   LPSTR lpstrText; 
  2219.   CHARRANGE chrgText; 
  2220. } FINDTEXTEX; 
  2221.  
  2222. typedef struct _FMS_GETDRIVEINFO { 
  2223.   DWORD dwTotalSpace; 
  2224.   DWORD dwFreeSpace; 
  2225.   TCHAR  szPath[260]; 
  2226.   TCHAR  szVolume[14]; 
  2227.   TCHAR  szShare[128]; 
  2228. } FMS_GETDRIVEINFO; 
  2229.  
  2230. typedef struct _FMS_GETFILESEL { 
  2231.   FILETIME ftTime; 
  2232.   DWORD    dwSize; 
  2233.   BYTE     bAttr; 
  2234.   TCHAR     szName[260]; 
  2235. } FMS_GETFILESEL; 
  2236.  
  2237. typedef struct _FMS_LOAD { 
  2238.   DWORD dwSize; 
  2239.   TCHAR  szMenuName[MENU_TEXT_LEN]; 
  2240.   HMENU hMenu; 
  2241.   UINT  wMenuDelta; 
  2242. } FMS_LOAD; 
  2243.  
  2244. typedef struct _FMS_TOOLBARLOAD { 
  2245.   DWORD        dwSize; 
  2246.   LPEXT_BUTTON lpButtons; 
  2247.   WORD         cButtons; 
  2248.   WORD         cBitmaps; 
  2249.   WORD         idBitmap; 
  2250.   HBITMAP      hBitmap; 
  2251. } FMS_TOOLBARLOAD; 
  2252.  
  2253. typedef struct _FOCUS_EVENT_RECORD { 
  2254.   WINBOOL bSetFocus; 
  2255. } FOCUS_EVENT_RECORD; 
  2256.  
  2257. typedef struct _FORM_INFO_1 { 
  2258.   DWORD Flags; 
  2259.   LPTSTR pName; 
  2260.   SIZEL  Size; 
  2261.   RECTL  ImageableArea; 
  2262. } FORM_INFO_1; 
  2263.  
  2264. typedef struct _FORMAT_PARAMETERS { 
  2265.   MEDIA_TYPE MediaType; 
  2266.   DWORD StartCylinderNumber; 
  2267.   DWORD EndCylinderNumber; 
  2268.   DWORD StartHeadNumber; 
  2269.   DWORD EndHeadNumber; 
  2270. } FORMAT_PARAMETERS ; 
  2271.  
  2272. typedef struct _formatrange { 
  2273.   HDC hdc; 
  2274.   HDC hdcTarget; 
  2275.   RECT rc; 
  2276.   RECT rcPage; 
  2277.   CHARRANGE chrg; 
  2278. } FORMATRANGE;       
  2279.  
  2280. typedef struct tagGCP_RESULTS {
  2281.   DWORD  lStructSize;
  2282.   LPTSTR  lpOutString;
  2283.   UINT  *lpOrder;
  2284.   INT  *lpDx;
  2285.   INT  *lpCaretPos;
  2286.   LPTSTR lpClass;
  2287.   UINT  *lpGlyphs;
  2288.   UINT  nGlyphs;
  2289.   UINT  nMaxFit;
  2290. } GCP_RESULTS, *LPGCP_RESULTS;
  2291.  
  2292. typedef struct _GENERIC_MAPPING { 
  2293.   ACCESS_MASK GenericRead; 
  2294.   ACCESS_MASK GenericWrite; 
  2295.   ACCESS_MASK GenericExecute; 
  2296.   ACCESS_MASK GenericAll; 
  2297. } GENERIC_MAPPING, *PGENERIC_MAPPING; 
  2298.  
  2299. typedef struct _GLYPHMETRICS { 
  2300.   UINT  gmBlackBoxX; 
  2301.   UINT  gmBlackBoxY; 
  2302.   POINT gmptGlyphOrigin; 
  2303.   short gmCellIncX; 
  2304.   short gmCellIncY; 
  2305. } GLYPHMETRICS, *LPGLYPHMETRICS; 
  2306.  
  2307. typedef struct tagHANDLETABLE { 
  2308.   HGDIOBJ objectHandle[1]; 
  2309. } HANDLETABLE, *LPHANDLETABLE; 
  2310.  
  2311. typedef struct _HD_HITTESTINFO { 
  2312.   POINT pt; 
  2313.   UINT flags; 
  2314.   int iItem; 
  2315. } HD_HITTESTINFO; 
  2316.  
  2317. typedef struct _HD_ITEM { 
  2318.   UINT    mask; 
  2319.   int     cxy; 
  2320.   LPTSTR   pszText; 
  2321.   HBITMAP hbm; 
  2322.   int     cchTextMax; 
  2323.   int     fmt; 
  2324.   LPARAM  lParam; 
  2325. } HD_ITEM; 
  2326.  
  2327. typedef struct _WINDOWPOS { 
  2328.   HWND hwnd; 
  2329.   HWND hwndInsertAfter; 
  2330.   int  x; 
  2331.   int  y; 
  2332.   int  cx; 
  2333.   int  cy; 
  2334.   UINT flags; 
  2335. } WINDOWPOS, *PWINDOWPOS, *LPWINDOWPOS; 
  2336.  
  2337. typedef struct _HD_LAYOUT { 
  2338.   RECT  * prc; 
  2339.   WINDOWPOS  * pwpos; 
  2340. } HD_LAYOUT; 
  2341.  
  2342. typedef struct _HD_NOTIFY { 
  2343.   NMHDR   hdr; 
  2344.   int     iItem; 
  2345.   int     iButton; 
  2346.   HD_ITEM  * pitem; 
  2347. } HD_NOTIFY; 
  2348.  
  2349. typedef  struct  tagHELPINFO { 
  2350.   UINT   cbSize; 
  2351.   int    iContextType; 
  2352.   int    iCtrlId; 
  2353.   HANDLE hItemHandle; 
  2354.   DWORD  dwContextId; 
  2355.   POINT  MousePos; 
  2356. } HELPINFO,   *LPHELPINFO; 
  2357.  
  2358. typedef struct {   
  2359.   int   wStructSize; 
  2360.   int   x; 
  2361.   int   y; 
  2362.   int   dx; 
  2363.   int   dy; 
  2364.   int   wMax; 
  2365.   TCHAR rgchMember[2]; 
  2366. } HELPWININFO; 
  2367.  
  2368. typedef struct tagHIGHCONTRAST {  
  2369.   UINT cbSize; 
  2370.   DWORD dwFlags; 
  2371.   LPTSTR lpszDefaultScheme; 
  2372. } HIGHCONTRAST,  * LPHIGHCONTRAST; 
  2373.  
  2374. typedef struct tagHSZPAIR { 
  2375.   HSZ hszSvc; 
  2376.   HSZ hszTopic; 
  2377. } HSZPAIR; 
  2378.  
  2379. typedef struct _ICONINFO { 
  2380.   WINBOOL    fIcon; 
  2381.   DWORD   xHotspot; 
  2382.   DWORD   yHotspot; 
  2383.   HBITMAP hbmMask; 
  2384.   HBITMAP hbmColor; 
  2385. } ICONINFO, *PICONINFO; 
  2386.  
  2387. typedef struct tagICONMETRICS { 
  2388.   UINT    cbSize; 
  2389.   int     iHorzSpacing; 
  2390.   int     iVertSpacing; 
  2391.   int     iTitleWrap; 
  2392.   LOGFONT lfFont; 
  2393. } ICONMETRICS,   *LPICONMETRICS; 
  2394.  
  2395. typedef struct _IMAGEINFO { 
  2396.   HBITMAP hbmImage; 
  2397.   HBITMAP hbmMask;  
  2398.   int     Unused1;  
  2399.   int     Unused2;  
  2400.   RECT    rcImage;  
  2401. } IMAGEINFO; 
  2402.  
  2403. typedef struct _KEY_EVENT_RECORD { 
  2404.   WINBOOL bKeyDown;             
  2405.   WORD wRepeatCount;         
  2406.   WORD wVirtualKeyCode;      
  2407.   WORD wVirtualScanCode; 
  2408.   union { 
  2409.     WCHAR UnicodeChar; 
  2410.     CHAR  AsciiChar PACKED;
  2411.   } uChar;  
  2412.   DWORD dwControlKeyState;   
  2413. } PACKED KEY_EVENT_RECORD; 
  2414.  
  2415. typedef struct _MOUSE_EVENT_RECORD { 
  2416.   COORD dwMousePosition; 
  2417.   DWORD dwButtonState; 
  2418.   DWORD dwControlKeyState; 
  2419.   DWORD dwEventFlags; 
  2420. } MOUSE_EVENT_RECORD; 
  2421.  
  2422. typedef struct _WINDOW_BUFFER_SIZE_RECORD { 
  2423.   COORD dwSize; 
  2424. } WINDOW_BUFFER_SIZE_RECORD; 
  2425.  
  2426. typedef struct _MENU_EVENT_RECORD { 
  2427.   UINT dwCommandId; 
  2428. } MENU_EVENT_RECORD, *PMENU_EVENT_RECORD; 
  2429.  
  2430. typedef struct _INPUT_RECORD { 
  2431.   WORD EventType; 
  2432.   union { 
  2433.     KEY_EVENT_RECORD KeyEvent; 
  2434.     MOUSE_EVENT_RECORD MouseEvent; 
  2435.     WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; 
  2436.     MENU_EVENT_RECORD MenuEvent; 
  2437.     FOCUS_EVENT_RECORD FocusEvent; 
  2438.   } Event; 
  2439. } INPUT_RECORD, *PINPUT_RECORD; 
  2440.  
  2441. typedef struct _SYSTEMTIME {  
  2442.   WORD wYear; 
  2443.   WORD wMonth; 
  2444.   WORD wDayOfWeek; 
  2445.   WORD wDay; 
  2446.   WORD wHour; 
  2447.   WORD wMinute; 
  2448.   WORD wSecond; 
  2449.   WORD wMilliseconds; 
  2450. } SYSTEMTIME, *LPSYSTEMTIME; 
  2451.  
  2452. typedef struct _JOB_INFO_1 {  
  2453.   DWORD  JobId; 
  2454.   LPTSTR pPrinterName; 
  2455.   LPTSTR pMachineName; 
  2456.   LPTSTR pUserName; 
  2457.   LPTSTR pDocument; 
  2458.   LPTSTR pDatatype; 
  2459.   LPTSTR pStatus; 
  2460.   DWORD  Status; 
  2461.   DWORD  Priority; 
  2462.   DWORD  Position; 
  2463.   DWORD  TotalPages; 
  2464.   DWORD  PagesPrinted; 
  2465.   SYSTEMTIME Submitted; 
  2466. } JOB_INFO_1; 
  2467.  
  2468. typedef struct _SID_IDENTIFIER_AUTHORITY { 
  2469.   BYTE Value[6]; 
  2470. } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY, 
  2471.     *LPSID_IDENTIFIER_AUTHORITY; 
  2472.  
  2473. typedef struct _SID {
  2474.    BYTE  Revision;
  2475.    BYTE  SubAuthorityCount;
  2476.    SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
  2477.    DWORD SubAuthority[ANYSIZE_ARRAY];
  2478. } SID, *PSID;
  2479.  
  2480. typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
  2481.  
  2482. typedef struct _SECURITY_DESCRIPTOR {
  2483.   BYTE  Revision;
  2484.   BYTE  Sbz1;
  2485.   SECURITY_DESCRIPTOR_CONTROL Control;
  2486.   PSID Owner;
  2487.   PSID Group;
  2488.   PACL Sacl;
  2489.   PACL Dacl;
  2490. } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
  2491.  
  2492. typedef struct _JOB_INFO_2 { 
  2493.   DWORD      JobId; 
  2494.   LPTSTR     pPrinterName; 
  2495.   LPTSTR     pMachineName; 
  2496.   LPTSTR     pUserName; 
  2497.   LPTSTR     pDocument; 
  2498.   LPTSTR     pNotifyName; 
  2499.   LPTSTR     pDatatype; 
  2500.   LPTSTR     pPrintProcessor; 
  2501.   LPTSTR     pParameters; 
  2502.   LPTSTR     pDriverName; 
  2503.   LPDEVMODE  pDevMode; 
  2504.   LPTSTR     pStatus; 
  2505.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  2506.   DWORD      Status; 
  2507.   DWORD      Priority; 
  2508.   DWORD      Position; 
  2509.   DWORD      StartTime; 
  2510.   DWORD      UntilTime; 
  2511.   DWORD      TotalPages; 
  2512.   DWORD      Size; 
  2513.   SYSTEMTIME Submitted; 
  2514.   DWORD      Time; 
  2515.   DWORD      PagesPrinted ; 
  2516. } JOB_INFO_2; 
  2517.  
  2518. typedef struct tagKERNINGPAIR { 
  2519.   WORD wFirst; 
  2520.   WORD wSecond; 
  2521.   int  iKernAmount; 
  2522. } KERNINGPAIR, *LPKERNINGPAIR; 
  2523.  
  2524. typedef struct _LANA_ENUM { 
  2525.   UCHAR length; 
  2526.   UCHAR lana[MAX_LANA]; 
  2527. } LANA_ENUM; 
  2528.  
  2529. typedef struct _LDT_ENTRY { 
  2530.   WORD LimitLow; 
  2531.   WORD BaseLow; 
  2532.   union { 
  2533.     struct { 
  2534.       BYTE BaseMid; 
  2535.       BYTE Flags1; 
  2536.       BYTE Flags2; 
  2537.       BYTE BaseHi; 
  2538.     } Bytes; 
  2539.     struct { 
  2540.       DWORD BaseMid : 8; 
  2541.       DWORD Type : 5; 
  2542.       DWORD Dpl : 2; 
  2543.       DWORD Pres : 1; 
  2544.       DWORD LimitHi : 4; 
  2545.       DWORD Sys : 1; 
  2546.       DWORD Reserved_0 : 1; 
  2547.       DWORD Default_Big : 1; 
  2548.       DWORD Granularity : 1; 
  2549.       DWORD BaseHi : 8; 
  2550.     } Bits; 
  2551.   } HighWord; 
  2552. } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY; 
  2553.  
  2554. typedef struct tagLOCALESIGNATURE {
  2555.   DWORD  lsUsb[4];
  2556.   DWORD  lsCsbDefault[2];
  2557.   DWORD  lsCsbSupported[2];
  2558. } LOCALESIGNATURE; 
  2559.  
  2560. typedef struct _LOCALGROUP_MEMBERS_INFO_0 {  
  2561.   PSID  lgrmi0_sid; 
  2562. } LOCALGROUP_MEMBERS_INFO_0; 
  2563.  
  2564. typedef struct _LOCALGROUP_MEMBERS_INFO_3 {  
  2565.   LPWSTR  lgrmi3_domainandname; 
  2566. } LOCALGROUP_MEMBERS_INFO_3; 
  2567.  
  2568. typedef long FXPT16DOT16,  * LPFXPT16DOT16; 
  2569.  
  2570. typedef LARGE_INTEGER LUID, *PLUID;
  2571.  
  2572. typedef struct _LUID_AND_ATTRIBUTES { 
  2573.   LUID  Luid; 
  2574.   DWORD Attributes; 
  2575. } LUID_AND_ATTRIBUTES; 
  2576.  
  2577. typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  2578. typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
  2579.  
  2580. typedef struct _LV_COLUMN { 
  2581.   UINT mask;       
  2582.   int fmt;         
  2583.   int cx;          
  2584.   LPTSTR pszText;  
  2585.   int cchTextMax;  
  2586.   int iSubItem;    
  2587. } LV_COLUMN; 
  2588.  
  2589. typedef struct _LV_ITEM { 
  2590.   UINT   mask;         
  2591.   int    iItem;        
  2592.   int    iSubItem;     
  2593.   UINT   state;        
  2594.   UINT   stateMask;    
  2595.   LPTSTR  pszText;     
  2596.   int    cchTextMax;   
  2597.   int    iImage;      
  2598.   LPARAM lParam;      
  2599. } LV_ITEM; 
  2600.  
  2601. typedef struct tagLV_DISPINFO { 
  2602.   NMHDR   hdr;   
  2603.   LV_ITEM item;  
  2604. } LV_DISPINFO; 
  2605.  
  2606. typedef struct _LV_FINDINFO { 
  2607.   UINT flags;        
  2608.   LPCTSTR psz;        
  2609.   LPARAM lParam;     
  2610.   POINT pt;          
  2611.   UINT vkDirection;  
  2612. } LV_FINDINFO; 
  2613.  
  2614. typedef struct _LV_HITTESTINFO { 
  2615.   POINT pt;    
  2616.   UINT flags;  
  2617.   int iItem;   
  2618. } LV_HITTESTINFO; 
  2619.  
  2620. typedef struct tagLV_KEYDOWN { 
  2621.   NMHDR hdr;   
  2622.   WORD wVKey;  
  2623.   UINT flags;  
  2624. } LV_KEYDOWN; 
  2625.  
  2626. typedef struct _MAT2 { 
  2627.   FIXED eM11; 
  2628.   FIXED eM12; 
  2629.   FIXED eM21; 
  2630.   FIXED eM22; 
  2631. } MAT2; 
  2632.  
  2633. typedef struct tagMDICREATESTRUCT { 
  2634.   LPCTSTR szClass; 
  2635.   LPCTSTR szTitle; 
  2636.   HANDLE  hOwner; 
  2637.   int     x; 
  2638.   int     y; 
  2639.   int     cx; 
  2640.   int     cy; 
  2641.   DWORD   style; 
  2642.   LPARAM  lParam; 
  2643. } MDICREATESTRUCT; 
  2644.  
  2645. typedef MDICREATESTRUCT *LPMDICREATESTRUCT;
  2646.  
  2647. typedef struct tagMEASUREITEMSTRUCT { 
  2648.   UINT  CtlType;      
  2649.   UINT  CtlID;        
  2650.   UINT  itemID;       
  2651.   UINT  itemWidth;    
  2652.   UINT  itemHeight;   
  2653.   DWORD itemData;     
  2654. } MEASUREITEMSTRUCT, *LPMEASUREITEMSTRUCT; 
  2655.  
  2656. typedef struct _MEMORY_BASIC_INFORMATION { 
  2657.   PVOID BaseAddress;            
  2658.   PVOID AllocationBase;         
  2659.   DWORD AllocationProtect;      
  2660.   DWORD RegionSize;             
  2661.   DWORD State;                  
  2662.   DWORD Protect;                
  2663.   DWORD Type;                   
  2664. } MEMORY_BASIC_INFORMATION; 
  2665. typedef MEMORY_BASIC_INFORMATION *PMEMORY_BASIC_INFORMATION; 
  2666.  
  2667. typedef struct _MEMORYSTATUS { 
  2668.   DWORD dwLength;        
  2669.   DWORD dwMemoryLoad;    
  2670.   DWORD dwTotalPhys;     
  2671.   DWORD dwAvailPhys;     
  2672.   DWORD dwTotalPageFile; 
  2673.   DWORD dwAvailPageFile; 
  2674.   DWORD dwTotalVirtual;  
  2675.   DWORD dwAvailVirtual;  
  2676. } MEMORYSTATUS, *LPMEMORYSTATUS; 
  2677.  
  2678. typedef struct {
  2679.   WORD  wVersion; 
  2680.   WORD  wOffset; 
  2681.   DWORD dwHelpId; 
  2682. } MENUEX_TEMPLATE_HEADER;
  2683.  
  2684. typedef struct { 
  2685.   DWORD  dwType; 
  2686.   DWORD  dwState; 
  2687.   UINT   uId; 
  2688.   BYTE   bResInfo; 
  2689.   WCHAR  szText[1]; 
  2690.   DWORD dwHelpId; 
  2691. } MENUEX_TEMPLATE_ITEM; 
  2692.  
  2693. typedef struct tagMENUITEMINFO {
  2694.   UINT    cbSize; 
  2695.   UINT    fMask; 
  2696.   UINT    fType; 
  2697.   UINT    fState; 
  2698.   UINT    wID; 
  2699.   HMENU   hSubMenu; 
  2700.   HBITMAP hbmpChecked; 
  2701.   HBITMAP hbmpUnchecked; 
  2702.   DWORD   dwItemData; 
  2703.   LPTSTR  dwTypeData; 
  2704.   UINT    cch; 
  2705. } MENUITEMINFO, *LPMENUITEMINFO; 
  2706. typedef MENUITEMINFO CONST *LPCMENUITEMINFO;
  2707.  
  2708. typedef struct {   
  2709.   WORD mtOption;      
  2710.   WORD mtID;          
  2711.   WCHAR mtString[1];  
  2712. } MENUITEMTEMPLATE; 
  2713.  
  2714. typedef struct {      
  2715.   WORD versionNumber; 
  2716.   WORD offset;        
  2717. } MENUITEMTEMPLATEHEADER; 
  2718. typedef VOID MENUTEMPLATE, *LPMENUTEMPLATE;
  2719.  
  2720. typedef struct tagMETAFILEPICT { 
  2721.   LONG      mm; 
  2722.   LONG      xExt; 
  2723.   LONG      yExt; 
  2724.   HMETAFILE hMF; 
  2725. } METAFILEPICT, *PMETAFILEPICT, *LPMETAFILEPICT; 
  2726.  
  2727. typedef struct tagMETAHEADER {  
  2728.   WORD  mtType; 
  2729.   WORD  mtHeaderSize; 
  2730.   WORD  mtVersion; 
  2731.   DWORD mtSize; 
  2732.   WORD  mtNoObjects; 
  2733.   DWORD mtMaxRecord; 
  2734.   WORD  mtNoParameters; 
  2735. } PACKED METAHEADER; 
  2736.  
  2737. typedef struct tagMETARECORD {  
  2738.   DWORD rdSize; 
  2739.   WORD  rdFunction; 
  2740.   WORD  rdParm[1]; 
  2741. } METARECORD, *LPMETARECORD; 
  2742.  
  2743. typedef struct tagMINIMIZEDMETRICS { 
  2744.   UINT    cbSize; 
  2745.   int     iWidth; 
  2746.   int     iHorzGap; 
  2747.   int     iVertGap; 
  2748.   int     iArrange; 
  2749. }   MINIMIZEDMETRICS,   *LPMINIMIZEDMETRICS; 
  2750.  
  2751. typedef struct tagMINMAXINFO {  
  2752.   POINT ptReserved;         
  2753.   POINT ptMaxSize;          
  2754.   POINT ptMaxPosition;      
  2755.   POINT ptMinTrackSize;     
  2756.   POINT ptMaxTrackSize;     
  2757. } MINMAXINFO, *LPMINMAXINFO; 
  2758.  
  2759. typedef struct modemdevcaps_tag {
  2760.   DWORD dwActualSize;           
  2761.   DWORD dwRequiredSize;         
  2762.   DWORD dwDevSpecificOffset;    
  2763.   DWORD dwDevSpecificSize;      
  2764.  
  2765.   DWORD dwModemProviderVersion; 
  2766.   DWORD dwModemManufacturerOffset; 
  2767.   DWORD dwModemManufacturerSize;   
  2768.   DWORD dwModemModelOffset;        
  2769.   DWORD dwModemModelSize;          
  2770.   DWORD dwModemVersionOffset;      
  2771.   DWORD dwModemVersionSize;        
  2772.  
  2773.   DWORD dwDialOptions;             
  2774.   DWORD dwCallSetupFailTimer;      
  2775.   DWORD dwInactivityTimeout;       
  2776.   DWORD dwSpeakerVolume;           
  2777.   DWORD dwSpeakerMode;             
  2778.   DWORD dwModemOptions;            
  2779.   DWORD dwMaxDTERate;              
  2780.   DWORD dwMaxDCERate;              
  2781.  
  2782.   BYTE abVariablePortion [1];    
  2783. } MODEMDEVCAPS, *PMODEMDEVCAPS, *LPMODEMDEVCAPS;
  2784.  
  2785. typedef struct modemsettings_tag {
  2786.   DWORD dwActualSize;            
  2787.   DWORD dwRequiredSize;          
  2788.   DWORD dwDevSpecificOffset;     
  2789.   DWORD dwDevSpecificSize;       
  2790.  
  2791.   DWORD dwCallSetupFailTimer;    
  2792.   DWORD dwInactivityTimeout;     
  2793.   DWORD dwSpeakerVolume;         
  2794.   DWORD dwSpeakerMode;           
  2795.   DWORD dwPreferredModemOptions; 
  2796.  
  2797.   DWORD dwNegotiatedModemOptions; 
  2798.   DWORD dwNegotiatedDCERate;      
  2799.  
  2800.   BYTE  abVariablePortion[1];     
  2801. } MODEMSETTINGS, *PMODEMSETTINGS, *LPMODEMSETTINGS;
  2802.  
  2803. typedef struct tagMONCBSTRUCT { 
  2804.   UINT   cb; 
  2805.   DWORD  dwTime; 
  2806.   HANDLE hTask; 
  2807.   DWORD  dwRet; 
  2808.   UINT   wType; 
  2809.   UINT   wFmt; 
  2810.   HCONV  hConv; 
  2811.   HSZ    hsz1; 
  2812.   HSZ    hsz2; 
  2813.   HDDEDATA hData; 
  2814.   DWORD    dwData1; 
  2815.   DWORD    dwData2; 
  2816.   CONVCONTEXT cc; 
  2817.   DWORD  cbData; 
  2818.   DWORD  Data[8]; 
  2819. } MONCBSTRUCT; 
  2820.  
  2821. typedef struct tagMONCONVSTRUCT { 
  2822.   UINT   cb; 
  2823.   WINBOOL   fConnect; 
  2824.   DWORD  dwTime; 
  2825.   HANDLE hTask; 
  2826.   HSZ    hszSvc; 
  2827.   HSZ    hszTopic; 
  2828.   HCONV  hConvClient; 
  2829.   HCONV  hConvServer; 
  2830. } MONCONVSTRUCT; 
  2831.  
  2832. typedef struct tagMONERRSTRUCT { 
  2833.   UINT   cb; 
  2834.   UINT   wLastError; 
  2835.   DWORD  dwTime; 
  2836.   HANDLE hTask; 
  2837. } MONERRSTRUCT; 
  2838.  
  2839. typedef struct tagMONHSZSTRUCT { 
  2840.   UINT   cb; 
  2841.   WINBOOL   fsAction; 
  2842.   DWORD  dwTime; 
  2843.   HSZ    hsz; 
  2844.   HANDLE hTask; 
  2845.   TCHAR   str[1]; 
  2846. } MONHSZSTRUCT; 
  2847.  
  2848. typedef struct _MONITOR_INFO_1 { 
  2849.   LPTSTR pName; 
  2850. } MONITOR_INFO_1; 
  2851.  
  2852. typedef struct _MONITOR_INFO_2 { 
  2853.   LPTSTR pName; 
  2854.   LPTSTR pEnvironment ; 
  2855.   LPTSTR pDLLName ; 
  2856. } MONITOR_INFO_2; 
  2857.  
  2858. typedef struct tagMONLINKSTRUCT { 
  2859.   UINT   cb; 
  2860.   DWORD  dwTime; 
  2861.   HANDLE hTask; 
  2862.   WINBOOL   fEstablished; 
  2863.   WINBOOL   fNoData; 
  2864.   HSZ    hszSvc; 
  2865.   HSZ    hszTopic; 
  2866.   HSZ    hszItem; 
  2867.   UINT   wFmt; 
  2868.   WINBOOL   fServer; 
  2869.   HCONV  hConvServer; 
  2870.   HCONV  hConvClient; 
  2871. } MONLINKSTRUCT; 
  2872.  
  2873. typedef struct tagMONMSGSTRUCT { 
  2874.   UINT   cb; 
  2875.   HWND   hwndTo; 
  2876.   DWORD  dwTime; 
  2877.   HANDLE hTask; 
  2878.   UINT   wMsg; 
  2879.   WPARAM wParam; 
  2880.   LPARAM lParam; 
  2881.   DDEML_MSG_HOOK_DATA dmhd; 
  2882. } MONMSGSTRUCT; 
  2883.  
  2884. typedef struct tagMOUSEHOOKSTRUCT { 
  2885.   POINT pt; 
  2886.   HWND  hwnd; 
  2887.   UINT  wHitTestCode; 
  2888.   DWORD dwExtraInfo; 
  2889. } MOUSEHOOKSTRUCT, *PMOUSEHOOKSTRUCT, *LPMOUSEHOOKSTRUCT; 
  2890.  
  2891. typedef struct _MOUSEKEYS { 
  2892.   DWORD cbSize; 
  2893.   DWORD dwFlags; 
  2894.   DWORD iMaxSpeed; 
  2895.   DWORD iTimeToMaxSpeed; 
  2896.   DWORD iCtrlSpeed; 
  2897.   DWORD dwReserved1; 
  2898.   DWORD dwReserved2; 
  2899. } MOUSEKEYS; 
  2900.  
  2901. typedef struct tagMSG {  
  2902.   HWND   hwnd;   
  2903.   UINT   message; 
  2904.   WPARAM wParam; 
  2905.   LPARAM lParam; 
  2906.   DWORD  time; 
  2907.   POINT  pt; 
  2908. } MSG, *LPMSG; 
  2909.  
  2910. typedef void CALLBACK (*MSGBOXCALLBACK) (LPHELPINFO lpHelpInfo);
  2911.  
  2912. typedef struct { 
  2913.   UINT      cbSize; 
  2914.   HWND      hwndOwner; 
  2915.   HINSTANCE hInstance; 
  2916.   LPCSTR    lpszText; 
  2917.   LPCSTR    lpszCaption; 
  2918.   DWORD     dwStyle; 
  2919.   LPCSTR    lpszIcon; 
  2920.   DWORD     dwContextHelpId; 
  2921.   MSGBOXCALLBACK lpfnMsgBoxCallback; 
  2922.   DWORD     dwLanguageId; 
  2923. } MSGBOXPARAMS, *PMSGBOXPARAMS,   *LPMSGBOXPARAMS; 
  2924.  
  2925. typedef struct _msgfilter { 
  2926.   NMHDR nmhdr; 
  2927.   UINT msg; 
  2928.   WPARAM wParam; 
  2929.   LPARAM lParam; 
  2930. } MSGFILTER; 
  2931.  
  2932. typedef struct tagMULTIKEYHELP { 
  2933.   DWORD  mkSize; 
  2934.   TCHAR  mkKeylist; 
  2935.   TCHAR  szKeyphrase[1]; 
  2936. } MULTIKEYHELP; 
  2937.  
  2938. typedef struct _NAME_BUFFER { 
  2939.   UCHAR name[NCBNAMSZ]; 
  2940.   UCHAR name_num; 
  2941.   UCHAR name_flags; 
  2942. } NAME_BUFFER; 
  2943.  
  2944. typedef struct _NCB { 
  2945.   UCHAR  ncb_command; 
  2946.   UCHAR  ncb_retcode; 
  2947.   UCHAR  ncb_lsn; 
  2948.   UCHAR  ncb_num; 
  2949.   PUCHAR ncb_buffer; 
  2950.   WORD   ncb_length; 
  2951.   UCHAR  ncb_callname[NCBNAMSZ]; 
  2952.   UCHAR  ncb_name[NCBNAMSZ]; 
  2953.   UCHAR  ncb_rto; 
  2954.   UCHAR  ncb_sto; 
  2955.   void (*ncb_post) (struct _NCB *); 
  2956.   UCHAR  ncb_lana_num; 
  2957.   UCHAR  ncb_cmd_cplt; 
  2958.   UCHAR  ncb_reserve[10]; 
  2959.   HANDLE ncb_event; 
  2960. } NCB; 
  2961.  
  2962. typedef struct _NCCALCSIZE_PARAMS { 
  2963.   RECT        rgrc[3]; 
  2964.   PWINDOWPOS  lppos; 
  2965. } NCCALCSIZE_PARAMS; 
  2966.  
  2967. typedef struct _NDDESHAREINFO { 
  2968.   LONG   lRevision; 
  2969.   LPTSTR lpszShareName; 
  2970.   LONG   lShareType; 
  2971.   LPTSTR lpszAppTopicList; 
  2972.   LONG   fSharedFlag; 
  2973.   LONG   fService; 
  2974.   LONG   fStartAppFlag; 
  2975.   LONG   nCmdShow; 
  2976.   LONG   qModifyId[2]; 
  2977.   LONG   cNumItems; 
  2978.   LPTSTR lpszItemList; 
  2979. }NDDESHAREINFO; 
  2980.  
  2981. typedef struct _NETRESOURCE { 
  2982.   DWORD  dwScope; 
  2983.   DWORD  dwType; 
  2984.   DWORD  dwDisplayType; 
  2985.   DWORD  dwUsage; 
  2986.   LPTSTR lpLocalName; 
  2987.   LPTSTR lpRemoteName; 
  2988.   LPTSTR lpComment; 
  2989.   LPTSTR lpProvider; 
  2990. } NETRESOURCE, *LPNETRESOURCE; 
  2991.  
  2992. typedef struct tagNEWCPLINFO {
  2993.   DWORD dwSize; 
  2994.   DWORD dwFlags; 
  2995.   DWORD dwHelpContext; 
  2996.   LONG  lData; 
  2997.   HICON hIcon; 
  2998.   TCHAR  szName[32]; 
  2999.   TCHAR  szInfo[64]; 
  3000.   TCHAR  szHelpFile[128]; 
  3001. } NEWCPLINFO; 
  3002.  
  3003. typedef struct tagNEWTEXTMETRIC { 
  3004.   LONG   tmHeight; 
  3005.   LONG   tmAscent; 
  3006.   LONG   tmDescent; 
  3007.   LONG   tmInternalLeading; 
  3008.   LONG   tmExternalLeading; 
  3009.   LONG   tmAveCharWidth; 
  3010.   LONG   tmMaxCharWidth; 
  3011.   LONG   tmWeight; 
  3012.   LONG   tmOverhang; 
  3013.   LONG   tmDigitizedAspectX; 
  3014.   LONG   tmDigitizedAspectY; 
  3015.   BCHAR  tmFirstChar; 
  3016.   BCHAR  tmLastChar; 
  3017.   BCHAR  tmDefaultChar; 
  3018.   BCHAR  tmBreakChar; 
  3019.   BYTE   tmItalic; 
  3020.   BYTE   tmUnderlined; 
  3021.   BYTE   tmStruckOut; 
  3022.   BYTE   tmPitchAndFamily; 
  3023.   BYTE   tmCharSet; 
  3024.   DWORD  ntmFlags; 
  3025.   UINT   ntmSizeEM; 
  3026.   UINT   ntmCellHeight; 
  3027.   UINT   ntmAvgWidth; 
  3028. } NEWTEXTMETRIC; 
  3029.  
  3030.  
  3031. typedef struct tagNEWTEXTMETRICEX {
  3032.   NEWTEXTMETRIC  ntmentm;
  3033.   FONTSIGNATURE  ntmeFontSignature;
  3034. } NEWTEXTMETRICEX;
  3035.  
  3036. typedef struct tagNM_LISTVIEW { 
  3037.   NMHDR hdr;        
  3038.   int   iItem;      
  3039.   int   iSubItem;   
  3040.   UINT  uNewState;  
  3041.   UINT  uOldState;  
  3042.   UINT  uChanged;   
  3043.   POINT ptAction;   
  3044.   LPARAM lParam;    
  3045. } NM_LISTVIEW; 
  3046.  
  3047. typedef struct _TREEITEM *HTREEITEM;
  3048.  
  3049. typedef struct _TV_ITEM { 
  3050.   UINT       mask;           
  3051.   HTREEITEM  hItem;           
  3052.   UINT       state;           
  3053.   UINT       stateMask;     
  3054.   LPTSTR     pszText;        
  3055.   int        cchTextMax;      
  3056.   int        iImage;          
  3057.   int        iSelectedImage;  
  3058.   int        cChildren;       
  3059.   LPARAM     lParam;          
  3060. } TV_ITEM,   *LPTV_ITEM; 
  3061.  
  3062. typedef struct _NM_TREEVIEW { 
  3063.   NMHDR    hdr;       
  3064.   UINT     action;        
  3065.   TV_ITEM  itemOld;   
  3066.   TV_ITEM  itemNew;   
  3067.   POINT    ptDrag;    
  3068. } NM_TREEVIEW; 
  3069. typedef NM_TREEVIEW   *LPNM_TREEVIEW; 
  3070.  
  3071. typedef struct _NM_UPDOWN {
  3072.   NMHDR    hdr;    
  3073.   int     iPos;    
  3074.   int  iDelta;     
  3075. } NM_UPDOWNW; 
  3076.  
  3077. typedef struct tagNONCLIENTMETRICS { 
  3078.   UINT    cbSize; 
  3079.   int     iBorderWidth; 
  3080.   int     iScrollWidth; 
  3081.   int     iScrollHeight; 
  3082.   int     iCaptionWidth; 
  3083.   int     iCaptionHeight; 
  3084.   LOGFONT lfCaptionFont; 
  3085.   int     iSmCaptionWidth; 
  3086.   int     iSmCaptionHeight; 
  3087.   LOGFONT lfSmCaptionFont; 
  3088.   int     iMenuWidth; 
  3089.   int     iMenuHeight; 
  3090.   LOGFONT lfMenuFont; 
  3091.   LOGFONT lfStatusFont; 
  3092.   LOGFONT lfMessageFont; 
  3093. } NONCLIENTMETRICS,  * LPNONCLIENTMETRICS; 
  3094.  
  3095. typedef struct _SERVICE_ADDRESS { 
  3096.   DWORD   dwAddressType; 
  3097.   DWORD   dwAddressFlags; 
  3098.   DWORD   dwAddressLength; 
  3099.   DWORD   dwPrincipalLength; 
  3100.   BYTE   *lpAddress;  
  3101.   BYTE   *lpPrincipal; 
  3102. } SERVICE_ADDRESS; 
  3103.  
  3104. typedef struct _SERVICE_ADDRESSES { 
  3105.   DWORD   dwAddressCount; 
  3106.   SERVICE_ADDRESS   Addresses[1]; 
  3107. } SERVICE_ADDRESSES, *LPSERVICE_ADDRESSES; 
  3108.  
  3109. typedef struct _GUID
  3110.     unsigned long  Data1; 
  3111.     unsigned short  Data2; 
  3112.     unsigned short  Data3; 
  3113.     unsigned char Data4[8]; 
  3114. } GUID, *LPGUID;
  3115. typedef GUID CLSID, *LPCLSID;
  3116.  
  3117. typedef struct _SERVICE_INFO { 
  3118.   LPGUID   lpServiceType; 
  3119.   LPTSTR   lpServiceName; 
  3120.   LPTSTR   lpComment; 
  3121.   LPTSTR   lpLocale; 
  3122.   DWORD    dwDisplayHint; 
  3123.   DWORD    dwVersion; 
  3124.   DWORD    dwTime; 
  3125.   LPTSTR   lpMachineName; 
  3126.   LPSERVICE_ADDRESSES lpServiceAddress; 
  3127.   BLOB ServiceSpecificInfo; 
  3128. } SERVICE_INFO; 
  3129.  
  3130. typedef struct _NS_SERVICE_INFO { 
  3131.   DWORD   dwNameSpace; 
  3132.   SERVICE_INFO ServiceInfo; 
  3133. } NS_SERVICE_INFO; 
  3134.  
  3135. typedef struct _numberfmt { 
  3136.   UINT      NumDigits; 
  3137.   UINT      LeadingZero; 
  3138.   UINT      Grouping; 
  3139.   LPTSTR    lpDecimalSep; 
  3140.   LPTSTR    lpThousandSep; 
  3141.   UINT      NegativeOrder; 
  3142. } NUMBERFMT; 
  3143.  
  3144. typedef struct _OFSTRUCT { 
  3145.   BYTE cBytes; 
  3146.   BYTE fFixedDisk; 
  3147.   WORD nErrCode; 
  3148.   WORD Reserved1; 
  3149.   WORD Reserved2; 
  3150.   CHAR szPathName[OFS_MAXPATHNAME]; 
  3151. } OFSTRUCT, *LPOFSTRUCT; 
  3152.  
  3153. typedef struct tagOFNA { 
  3154.   DWORD         lStructSize; 
  3155.   HWND          hwndOwner; 
  3156.   HINSTANCE     hInstance; 
  3157.   LPCSTR        lpstrFilter; 
  3158.   LPSTR         lpstrCustomFilter; 
  3159.   DWORD         nMaxCustFilter; 
  3160.   DWORD         nFilterIndex; 
  3161.   LPSTR         lpstrFile; 
  3162.   DWORD         nMaxFile; 
  3163.   LPSTR         lpstrFileTitle; 
  3164.   DWORD         nMaxFileTitle; 
  3165.   LPCSTR        lpstrInitialDir; 
  3166.   LPCSTR        lpstrTitle; 
  3167.   DWORD         Flags; 
  3168.   WORD          nFileOffset; 
  3169.   WORD          nFileExtension; 
  3170.   LPCSTR        lpstrDefExt; 
  3171.   DWORD         lCustData; 
  3172.   LPOFNHOOKPROC lpfnHook; 
  3173.   LPCSTR        lpTemplateName; 
  3174. } OPENFILENAMEA, *LPOPENFILENAMEA; 
  3175.  
  3176. typedef struct tagOFNW { 
  3177.   DWORD         lStructSize; 
  3178.   HWND          hwndOwner; 
  3179.   HINSTANCE     hInstance; 
  3180.   LPCWSTR       lpstrFilter; 
  3181.   LPWSTR        lpstrCustomFilter; 
  3182.   DWORD         nMaxCustFilter; 
  3183.   DWORD         nFilterIndex; 
  3184.   LPWSTR        lpstrFile; 
  3185.   DWORD         nMaxFile; 
  3186.   LPWSTR        lpstrFileTitle; 
  3187.   DWORD         nMaxFileTitle; 
  3188.   LPCWSTR       lpstrInitialDir; 
  3189.   LPCWSTR       lpstrTitle; 
  3190.   DWORD         Flags; 
  3191.   WORD          nFileOffset; 
  3192.   WORD          nFileExtension; 
  3193.   LPCWSTR       lpstrDefExt; 
  3194.   DWORD         lCustData; 
  3195.   LPOFNHOOKPROC lpfnHook; 
  3196.   LPCWSTR       lpTemplateName; 
  3197. } OPENFILENAMEW, *LPOPENFILENAMEW; 
  3198.  
  3199. #ifdef    UNICODE
  3200. typedef    OPENFILENAMEW    OPENFILENAME;
  3201. #else
  3202. typedef    OPENFILENAMEA    OPENFILENAME;
  3203. #endif
  3204. typedef    OPENFILENAME    *LPOPENFILENAME;
  3205.  
  3206.  
  3207. typedef struct _OFNOTIFY {
  3208.   NMHDR          hdr; 
  3209.   LPOPENFILENAME lpOFN; 
  3210.   LPTSTR         pszFile; 
  3211. } OFNOTIFY, *LPOFNOTIFY; 
  3212.  
  3213. typedef struct _OSVERSIONINFO { 
  3214.   DWORD dwOSVersionInfoSize; 
  3215.   DWORD dwMajorVersion; 
  3216.   DWORD dwMinorVersion; 
  3217.   DWORD dwBuildNumber; 
  3218.   DWORD dwPlatformId; 
  3219.   TCHAR szCSDVersion[ 128 ]; 
  3220. } OSVERSIONINFO, *POSVERSIONINFO, *LPOSVERSIONINFO; 
  3221.  
  3222. typedef struct tagTEXTMETRIC { 
  3223.   LONG tmHeight; 
  3224.   LONG tmAscent; 
  3225.   LONG tmDescent; 
  3226.   LONG tmInternalLeading; 
  3227.   LONG tmExternalLeading; 
  3228.   LONG tmAveCharWidth; 
  3229.   LONG tmMaxCharWidth; 
  3230.   LONG tmWeight; 
  3231.   LONG tmOverhang; 
  3232.   LONG tmDigitizedAspectX; 
  3233.   LONG tmDigitizedAspectY; 
  3234.   BCHAR tmFirstChar; 
  3235.   BCHAR tmLastChar; 
  3236.   BCHAR tmDefaultChar; 
  3237.   BCHAR tmBreakChar; 
  3238.   BYTE tmItalic; 
  3239.   BYTE tmUnderlined; 
  3240.   BYTE tmStruckOut; 
  3241.   BYTE tmPitchAndFamily; 
  3242.   BYTE tmCharSet; 
  3243. } TEXTMETRIC, *LPTEXTMETRIC; 
  3244.  
  3245. typedef struct _OUTLINETEXTMETRIC { 
  3246.   UINT   otmSize; 
  3247.   TEXTMETRIC otmTextMetrics; 
  3248.   BYTE   otmFiller; 
  3249.   PANOSE otmPanoseNumber; 
  3250.   UINT   otmfsSelection; 
  3251.   UINT   otmfsType; 
  3252.   int    otmsCharSlopeRise; 
  3253.   int    otmsCharSlopeRun; 
  3254.   int    otmItalicAngle; 
  3255.   UINT   otmEMSquare; 
  3256.   int    otmAscent; 
  3257.   int    otmDescent; 
  3258.   UINT   otmLineGap; 
  3259.   UINT   otmsCapEmHeight; 
  3260.   UINT   otmsXHeight; 
  3261.   RECT   otmrcFontBox; 
  3262.   int    otmMacAscent; 
  3263.   int    otmMacDescent; 
  3264.   UINT   otmMacLineGap; 
  3265.   UINT   otmusMinimumPPEM; 
  3266.   POINT  otmptSubscriptSize; 
  3267.   POINT  otmptSubscriptOffset; 
  3268.   POINT  otmptSuperscriptSize; 
  3269.   POINT  otmptSuperscriptOffset; 
  3270.   UINT   otmsStrikeoutSize; 
  3271.   int    otmsStrikeoutPosition; 
  3272.   int    otmsUnderscoreSize; 
  3273.   int    otmsUnderscorePosition; 
  3274.   PSTR   otmpFamilyName; 
  3275.   PSTR   otmpFaceName; 
  3276.   PSTR   otmpStyleName; 
  3277.   PSTR   otmpFullName; 
  3278. } OUTLINETEXTMETRIC, *LPOUTLINETEXTMETRIC; 
  3279.  
  3280. typedef struct _OVERLAPPED { 
  3281.   DWORD  Internal; 
  3282.   DWORD  InternalHigh; 
  3283.   DWORD  Offset; 
  3284.   DWORD  OffsetHigh; 
  3285.   HANDLE hEvent; 
  3286. } OVERLAPPED, *LPOVERLAPPED; 
  3287.  
  3288. typedef struct tagPSD {
  3289.     DWORD           lStructSize; 
  3290.     HWND            hwndOwner; 
  3291.     HGLOBAL         hDevMode; 
  3292.     HGLOBAL         hDevNames; 
  3293.     DWORD           Flags; 
  3294.     POINT           ptPaperSize; 
  3295.     RECT            rtMinMargin; 
  3296.     RECT            rtMargin; 
  3297.     HINSTANCE       hInstance; 
  3298.     LPARAM          lCustData; 
  3299.     LPPAGESETUPHOOK lpfnPageSetupHook; 
  3300.     LPPAGEPAINTHOOK lpfnPagePaintHook; 
  3301.     LPCTSTR         lpPageSetupTemplateName; 
  3302.     HGLOBAL         hPageSetupTemplate; 
  3303. } PAGESETUPDLG, *LPPAGESETUPDLG; 
  3304.  
  3305. typedef struct tagPAINTSTRUCT { 
  3306.   HDC  hdc; 
  3307.   WINBOOL fErase; 
  3308.   RECT rcPaint; 
  3309.   WINBOOL fRestore; 
  3310.   WINBOOL fIncUpdate; 
  3311.   BYTE rgbReserved[32]; 
  3312. } PAINTSTRUCT, *LPPAINTSTRUCT; 
  3313.  
  3314. typedef struct _paraformat { 
  3315.   UINT cbSize; 
  3316.   DWORD dwMask; 
  3317.   WORD  wNumbering; 
  3318.   WORD  wReserved; 
  3319.   LONG  dxStartIndent; 
  3320.   LONG  dxRightIndent; 
  3321.   LONG  dxOffset; 
  3322.   WORD  wAlignment; 
  3323.   SHORT cTabCount; 
  3324.   LONG  rgxTabs[MAX_TAB_STOPS]; 
  3325. } PARAFORMAT; 
  3326.  
  3327. typedef struct _PERF_COUNTER_BLOCK { 
  3328.   DWORD ByteLength; 
  3329. } PERF_COUNTER_BLOCK; 
  3330.  
  3331. typedef struct _PERF_COUNTER_DEFINITION { 
  3332.   DWORD  ByteLength; 
  3333.   DWORD  CounterNameTitleIndex; 
  3334.   LPWSTR CounterNameTitle; 
  3335.   DWORD  CounterHelpTitleIndex; 
  3336.   LPWSTR CounterHelpTitle; 
  3337.   DWORD  DefaultScale; 
  3338.   DWORD  DetailLevel; 
  3339.   DWORD  CounterType; 
  3340.   DWORD  CounterSize; 
  3341.   DWORD  CounterOffset; 
  3342. } PERF_COUNTER_DEFINITION; 
  3343.  
  3344. typedef struct _PERF_DATA_BLOCK { 
  3345.   WCHAR         Signature[4]; 
  3346.   DWORD         LittleEndian; 
  3347.   DWORD         Version; 
  3348.   DWORD         Revision; 
  3349.   DWORD         TotalByteLength; 
  3350.   DWORD         HeaderLength; 
  3351.   DWORD         NumObjectTypes; 
  3352.   DWORD         DefaultObject; 
  3353.   SYSTEMTIME    SystemTime; 
  3354.   LARGE_INTEGER PerfTime; 
  3355.   LARGE_INTEGER PerfFreq; 
  3356.   LARGE_INTEGER PerfTime100nSec; 
  3357.   DWORD         SystemNameLength; 
  3358.   DWORD         SystemNameOffset; 
  3359. } PERF_DATA_BLOCK; 
  3360.  
  3361. typedef struct _PERF_INSTANCE_DEFINITION { 
  3362.   DWORD ByteLength; 
  3363.   DWORD ParentObjectTitleIndex; 
  3364.   DWORD ParentObjectInstance; 
  3365.   DWORD UniqueID; 
  3366.   DWORD NameOffset; 
  3367.   DWORD NameLength; 
  3368. } PERF_INSTANCE_DEFINITION; 
  3369.  
  3370. typedef struct _PERF_OBJECT_TYPE { 
  3371.   DWORD  TotalByteLength; 
  3372.   DWORD  DefinitionLength; 
  3373.   DWORD  HeaderLength; 
  3374.   DWORD  ObjectNameTitleIndex; 
  3375.   LPWSTR ObjectNameTitle; 
  3376.   DWORD  ObjectHelpTitleIndex; 
  3377.   LPWSTR ObjectHelpTitle; 
  3378.   DWORD  DetailLevel; 
  3379.   DWORD  NumCounters; 
  3380.   DWORD  DefaultCounter; 
  3381.   DWORD  NumInstances; 
  3382.   DWORD  CodePage; 
  3383.   LARGE_INTEGER PerfTime; 
  3384.   LARGE_INTEGER PerfFreq; 
  3385. } PERF_OBJECT_TYPE; 
  3386.  
  3387. typedef struct _POLYTEXT { 
  3388.   int     x; 
  3389.   int     y; 
  3390.   UINT    n; 
  3391.   LPCTSTR lpstr; 
  3392.   UINT    uiFlags; 
  3393.   RECT    rcl; 
  3394.   int     *pdx; 
  3395. } POLYTEXT; 
  3396.  
  3397. typedef struct _PORT_INFO_1 { 
  3398.   LPTSTR pName; 
  3399. } PORT_INFO_1; 
  3400.  
  3401. typedef struct _PORT_INFO_2 { 
  3402.   LPSTR pPortName; 
  3403.   LPSTR pMonitorName; 
  3404.   LPSTR pDescription; 
  3405.   DWORD fPortType; 
  3406.   DWORD Reserved; 
  3407. } PORT_INFO_2; 
  3408.  
  3409. typedef struct _PREVENT_MEDIA_REMOVAL { 
  3410.   BOOLEAN PreventMediaRemoval; 
  3411. } PREVENT_MEDIA_REMOVAL ; 
  3412.  
  3413. typedef struct tagPD {  
  3414.   DWORD     lStructSize; 
  3415.   HWND      hwndOwner; 
  3416.   HANDLE    hDevMode; 
  3417.   HANDLE    hDevNames; 
  3418.   HDC       hDC; 
  3419.   DWORD     Flags; 
  3420.   WORD      nFromPage; 
  3421.   WORD      nToPage; 
  3422.   WORD      nMinPage; 
  3423.   WORD      nMaxPage; 
  3424.   WORD      nCopies; 
  3425.   HINSTANCE hInstance; 
  3426.   DWORD     lCustData; 
  3427.   LPPRINTHOOKPROC lpfnPrintHook; 
  3428.   LPSETUPHOOKPROC lpfnSetupHook; 
  3429.   LPCTSTR    lpPrintTemplateName; 
  3430.   LPCTSTR    lpSetupTemplateName; 
  3431.   HANDLE    hPrintTemplate; 
  3432.   HANDLE    hSetupTemplate; 
  3433. } PACKED PRINTDLG, *LPPRINTDLG; 
  3434.  
  3435. typedef struct _PRINTER_DEFAULTS {  
  3436.   LPTSTR      pDatatype; 
  3437.   LPDEVMODE   pDevMode; 
  3438.   ACCESS_MASK DesiredAccess; 
  3439. } PRINTER_DEFAULTS, *PPRINTER_DEFAULTS, *LPPRINTER_DEFAULTS; 
  3440.  
  3441. #ifdef UNICODE
  3442. typedef PRINTER_DEFAULTS PRINTER_DEFAULTSW;
  3443. typedef PPRINTER_DEFAULTS PPRINTER_DEFAULTSW;
  3444. typedef LPPRINTER_DEFAULTS LPPRINTER_DEFAULTSW;
  3445. #else
  3446. typedef PRINTER_DEFAULTS PRINTER_DEFAULTSA;
  3447. typedef PPRINTER_DEFAULTS PPRINTER_DEFAULTSA;
  3448. typedef LPPRINTER_DEFAULTS LPPRINTER_DEFAULTSA;
  3449. #endif /* UNICODE */
  3450.  
  3451. typedef struct _PRINTER_INFO_1 { 
  3452.   DWORD  Flags; 
  3453.   LPTSTR pDescription; 
  3454.   LPTSTR pName; 
  3455.   LPTSTR pComment; 
  3456. } PRINTER_INFO_1, *PPRINTER_INFO_1, *LPPRINTER_INFO_1; 
  3457.  
  3458. typedef struct _PRINTER_INFO_2 { 
  3459.   LPTSTR    pServerName; 
  3460.   LPTSTR    pPrinterName; 
  3461.   LPTSTR    pShareName; 
  3462.   LPTSTR    pPortName; 
  3463.   LPTSTR    pDriverName; 
  3464.   LPTSTR    pComment; 
  3465.   LPTSTR    pLocation; 
  3466.   LPDEVMODE pDevMode; 
  3467.   LPTSTR    pSepFile; 
  3468.   LPTSTR    pPrintProcessor; 
  3469.   LPTSTR    pDatatype; 
  3470.   LPTSTR    pParameters; 
  3471.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  3472.   DWORD     Attributes; 
  3473.   DWORD     Priority; 
  3474.   DWORD     DefaultPriority; 
  3475.   DWORD     StartTime; 
  3476.   DWORD     UntilTime; 
  3477.   DWORD     Status; 
  3478.   DWORD     cJobs; 
  3479.   DWORD     AveragePPM; 
  3480. } PRINTER_INFO_2; 
  3481.  
  3482. typedef struct _PRINTER_INFO_3 { 
  3483.   PSECURITY_DESCRIPTOR pSecurityDescriptor; 
  3484. } PRINTER_INFO_3; 
  3485.  
  3486. typedef struct _PRINTER_INFO_4 { 
  3487.   LPTSTR  pPrinterName; 
  3488.   LPTSTR  pServerName; 
  3489.   DWORD  Attributes; 
  3490. } PRINTER_INFO_4; 
  3491.  
  3492. typedef struct _PRINTER_INFO_5 { 
  3493.   LPTSTR    pPrinterName; 
  3494.   LPTSTR    pPortName; 
  3495.   DWORD     Attributes; 
  3496.   DWORD     DeviceNotSelectedTimeout; 
  3497.   DWORD     TransmissionRetryTimeout; 
  3498. } PRINTER_INFO_5; 
  3499.  
  3500. typedef struct _PRINTER_NOTIFY_INFO_DATA { 
  3501.   WORD   Type; 
  3502.   WORD   Field; 
  3503.   DWORD  Reserved; 
  3504.   DWORD  Id; 
  3505.   union { 
  3506.     DWORD  adwData[2]; 
  3507.     struct { 
  3508.       DWORD  cbBuf; 
  3509.       LPVOID pBuf; 
  3510.     } Data; 
  3511.   } NotifyData; 
  3512. } PRINTER_NOTIFY_INFO_DATA; 
  3513.  
  3514. typedef struct _PRINTER_NOTIFY_INFO { 
  3515.   DWORD  Version; 
  3516.   DWORD  Flags; 
  3517.   DWORD  Count; 
  3518.   PRINTER_NOTIFY_INFO_DATA  aData[1]; 
  3519. } PRINTER_NOTIFY_INFO; 
  3520.  
  3521. typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE { 
  3522.   WORD   Type; 
  3523.   WORD   Reserved0; 
  3524.   DWORD  Reserved1; 
  3525.   DWORD  Reserved2; 
  3526.   DWORD  Count; 
  3527.   PWORD  pFields; 
  3528. } PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE; 
  3529.  
  3530. typedef struct _PRINTER_NOTIFY_OPTIONS { 
  3531.   DWORD  Version; 
  3532.   DWORD  Flags; 
  3533.   DWORD  Count; 
  3534.   PPRINTER_NOTIFY_OPTIONS_TYPE  pTypes; 
  3535. } PRINTER_NOTIFY_OPTIONS; 
  3536.  
  3537. typedef struct _PRINTPROCESSOR_INFO_1 { 
  3538.   LPTSTR pName; 
  3539. } PRINTPROCESSOR_INFO_1; 
  3540.  
  3541. typedef struct _PRIVILEGE_SET { 
  3542.   DWORD PrivilegeCount; 
  3543.   DWORD Control; 
  3544.   LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 
  3545. } PRIVILEGE_SET, *PPRIVILEGE_SET, *LPPRIVILEGE_SET; 
  3546.  
  3547. typedef struct _PROCESS_HEAP_ENTRY {  
  3548.   PVOID lpData; 
  3549.   DWORD cbData; 
  3550.   BYTE cbOverhead; 
  3551.   BYTE iRegionIndex; 
  3552.   WORD wFlags; 
  3553.   DWORD dwCommittedSize; 
  3554.   DWORD dwUnCommittedSize; 
  3555.   LPVOID lpFirstBlock; 
  3556.   LPVOID lpLastBlock; 
  3557.   HANDLE hMem; 
  3558. } PROCESS_HEAPENTRY, *LPPROCESS_HEAP_ENTRY; 
  3559.  
  3560. typedef struct _PROCESS_INFORMATION { 
  3561.   HANDLE hProcess; 
  3562.   HANDLE hThread; 
  3563.   DWORD dwProcessId; 
  3564.   DWORD dwThreadId; 
  3565. } PROCESS_INFORMATION, *LPPROCESS_INFORMATION; 
  3566.  
  3567. typedef UINT CALLBACK (*LPFNPSPCALLBACK) (HWND, UINT, LPVOID);
  3568.  
  3569. typedef struct _PROPSHEETPAGE { 
  3570.   DWORD     dwSize;     
  3571.   DWORD     dwFlags;    
  3572.   HINSTANCE hInstance;  
  3573.   union { 
  3574.     LPCTSTR        pszTemplate;      
  3575.     LPCDLGTEMPLATE pResource;        
  3576.   } u1; 
  3577.   union { 
  3578.     HICON  hIcon;     
  3579.     LPCTSTR pszIcon;  
  3580.   } u2; 
  3581.   LPCTSTR pszTitle;     
  3582.   DLGPROC pfnDlgProc;   
  3583.   LPARAM  lParam;       
  3584.   LPFNPSPCALLBACK pfnCallback;         
  3585.   UINT   * pcRefParent;              
  3586. } PROPSHEETPAGE,   *LPPROPSHEETPAGE; 
  3587. typedef const PROPSHEETPAGE   *LPCPROPSHEETPAGE; 
  3588.  
  3589. typedef struct _PSP *HPROPSHEETPAGE;
  3590. typedef struct _PROPSHEETHEADER { 
  3591.   DWORD      dwSize;     
  3592.   DWORD      dwFlags;    
  3593.   HWND       hwndParent; 
  3594.   HINSTANCE  hInstance;  
  3595.   union { 
  3596.     HICON  hIcon;      
  3597.     LPCTSTR pszIcon;   
  3598.   } u1; 
  3599.   LPCTSTR     pszCaption; 
  3600.   UINT       nPages; 
  3601.   union { 
  3602.     UINT  nStartPage; 
  3603.     LPCTSTR pStartPage; 
  3604.   } u2; 
  3605.   union { 
  3606.     LPCPROPSHEETPAGE    ppsp;   
  3607.     HPROPSHEETPAGE   *phpage; 
  3608.   } u3; 
  3609.   PFNPROPSHEETCALLBACK pfnCallback; 
  3610. } PROPSHEETHEADER,   *LPPROPSHEETHEADER; 
  3611. typedef const PROPSHEETHEADER   *LPCPROPSHEETHEADER; 
  3612.  
  3613. /* PropertySheet callbacks */
  3614. typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGE) (HPROPSHEETPAGE, LPARAM);
  3615. typedef WINBOOL CALLBACK (*LPFNADDPROPSHEETPAGES) (LPVOID, 
  3616.                            LPFNADDPROPSHEETPAGE, 
  3617.                            LPARAM);
  3618.  
  3619. typedef  struct _PROTOCOL_INFO {  
  3620.   DWORD  dwServiceFlags; 
  3621.   INT  iAddressFamily; 
  3622.   INT  iMaxSockAddr; 
  3623.   INT  iMinSockAddr; 
  3624.   INT  iSocketType; 
  3625.   INT  iProtocol; 
  3626.   DWORD  dwMessageSize; 
  3627.   LPTSTR  lpProtocol; 
  3628. } PROTOCOL_INFO; 
  3629.  
  3630. typedef struct _PROVIDOR_INFO_1 { 
  3631.   LPTSTR pName; 
  3632.   LPTSTR pEnvironment ; 
  3633.   LPTSTR pDLLName ; 
  3634. } PROVIDOR_INFO_1; 
  3635.  
  3636. typedef struct _PSHNOTIFY { 
  3637.   NMHDR hdr; 
  3638.   LPARAM lParam; 
  3639. } PSHNOTIFY,   *LPPSHNOTIFY; 
  3640.  
  3641. typedef struct _punctuation {
  3642.   UINT   iSize;          
  3643.   LPSTR  szPunctuation;  
  3644. } PUNCTUATION; 
  3645.  
  3646. typedef struct _QUERY_SERVICE_CONFIG { 
  3647.   DWORD dwServiceType; 
  3648.   DWORD dwStartType; 
  3649.   DWORD dwErrorControl; 
  3650.   LPTSTR lpBinaryPathName; 
  3651.   LPTSTR lpLoadOrderGroup; 
  3652.   DWORD dwTagId; 
  3653.   LPTSTR lpDependencies; 
  3654.   LPTSTR lpServiceStartName; 
  3655.   LPTSTR lpDisplayName; 
  3656. } QUERY_SERVICE_CONFIG, *LPQUERY_SERVICE_CONFIG; 
  3657.  
  3658. typedef struct _QUERY_SERVICE_LOCK_STATUS { 
  3659.   DWORD fIsLocked; 
  3660.   LPTSTR lpLockOwner; 
  3661.   DWORD dwLockDuration; 
  3662. } QUERY_SERVICE_LOCK_STATUS, *LPQUERY_SERVICE_LOCK_STATUS ; 
  3663.  
  3664. typedef  struct  _RASAMB {  
  3665.   DWORD    dwSize; 
  3666.   DWORD    dwError; 
  3667.   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ]; 
  3668.   BYTE     bLana; 
  3669. } RASAMB; 
  3670.  
  3671. typedef struct _RASCONN { 
  3672.   DWORD     dwSize; 
  3673.   HRASCONN  hrasconn; 
  3674.   TCHAR     szEntryName[RAS_MaxEntryName + 1]; 
  3675.  
  3676.   CHAR      szDeviceType[ RAS_MaxDeviceType + 1 ]; 
  3677.   CHAR      szDeviceName[ RAS_MaxDeviceName + 1 ]; 
  3678. } RASCONN ; 
  3679.  
  3680. typedef struct _RASCONNSTATUS { 
  3681.   DWORD         dwSize; 
  3682.   RASCONNSTATE  rasconnstate; 
  3683.   DWORD         dwError; 
  3684.   TCHAR         szDeviceType[RAS_MaxDeviceType + 1]; 
  3685.   TCHAR         szDeviceName[RAS_MaxDeviceName + 1]; 
  3686. } RASCONNSTATUS; 
  3687.  
  3688. typedef  struct  _RASDIALEXTENSIONS { 
  3689.   DWORD    dwSize; 
  3690.   DWORD    dwfOptions; 
  3691.   HWND    hwndParent; 
  3692.   DWORD    reserved; 
  3693. } RASDIALEXTENSIONS; 
  3694.  
  3695. typedef struct _RASDIALPARAMS { 
  3696.   DWORD  dwSize; 
  3697.   TCHAR  szEntryName[RAS_MaxEntryName + 1]; 
  3698.   TCHAR  szPhoneNumber[RAS_MaxPhoneNumber + 1]; 
  3699.   TCHAR  szCallbackNumber[RAS_MaxCallbackNumber + 1]; 
  3700.   TCHAR  szUserName[UNLEN + 1]; 
  3701.   TCHAR  szPassword[PWLEN + 1]; 
  3702.   TCHAR  szDomain[DNLEN + 1] ; 
  3703. } RASDIALPARAMS; 
  3704.  
  3705. typedef struct _RASENTRYNAME { 
  3706.   DWORD  dwSize; 
  3707.   TCHAR  szEntryName[RAS_MaxEntryName + 1]; 
  3708. }RASENTRYNAME; 
  3709.  
  3710. typedef  struct  _RASPPPIP { 
  3711.   DWORD    dwSize; 
  3712.   DWORD    dwError; 
  3713.   TCHAR    szIpAddress[ RAS_MaxIpAddress + 1 ]; 
  3714. } RASPPPIP; 
  3715.  
  3716. typedef  struct  _RASPPPIPX { 
  3717.   DWORD    dwSize; 
  3718.   DWORD    dwError; 
  3719.   TCHAR    szIpxAddress[ RAS_MaxIpxAddress + 1 ]; 
  3720. } RASPPPIPX; 
  3721.  
  3722. typedef  struct  _RASPPPNBF { 
  3723.   DWORD    dwSize; 
  3724.   DWORD    dwError; 
  3725.   DWORD    dwNetBiosError; 
  3726.   TCHAR    szNetBiosError[ NETBIOS_NAME_LEN + 1 ]; 
  3727.   TCHAR    szWorkstationName[ NETBIOS_NAME_LEN + 1 ]; 
  3728.   BYTE     bLana; 
  3729. } RASPPPNBF; 
  3730.  
  3731. typedef struct _RASTERIZER_STATUS { 
  3732.   short nSize; 
  3733.   short wFlags; 
  3734.   short nLanguageID; 
  3735. } RASTERIZER_STATUS, *LPRASTERIZER_STATUS; 
  3736.  
  3737. typedef struct _REASSIGN_BLOCKS { 
  3738.   WORD   Reserved; 
  3739.   WORD   Count; 
  3740.   DWORD BlockNumber[1]; 
  3741. } REASSIGN_BLOCKS ; 
  3742.  
  3743. typedef struct _REMOTE_NAME_INFO {
  3744.   LPTSTR  lpUniversalName; 
  3745.   LPTSTR  lpConnectionName; 
  3746.   LPTSTR  lpRemainingPath;    
  3747. } REMOTE_NAME_INFO; 
  3748.  
  3749. /*
  3750.  TODO: OLE
  3751. typedef struct _reobject { 
  3752.   DWORD  cbStruct;           
  3753.   LONG   cp;                 
  3754.   CLSID  clsid;              
  3755.   LPOLEOBJECT      poleobj;  
  3756.   LPSTORAGE        pstg;     
  3757.   LPOLECLIENTSITE  polesite; 
  3758.   SIZEL  sizel;              
  3759.   DWORD  dvaspect;           
  3760.   DWORD  dwFlags;            
  3761.   DWORD  dwUser;             
  3762. } REOBJECT; 
  3763. */
  3764.  
  3765. typedef struct _repastespecial { 
  3766.   DWORD  dwAspect;  
  3767.   DWORD  dwParam;   
  3768. } REPASTESPECIAL; 
  3769.  
  3770. typedef struct _reqresize { 
  3771.   NMHDR nmhdr; 
  3772.   RECT rc; 
  3773. } REQRESIZE; 
  3774.  
  3775. typedef struct _RGNDATAHEADER { 
  3776.   DWORD dwSize; 
  3777.   DWORD iType; 
  3778.   DWORD nCount; 
  3779.   DWORD nRgnSize; 
  3780.   RECT  rcBound; 
  3781. } RGNDATAHEADER; 
  3782.  
  3783. typedef struct _RGNDATA { 
  3784.   RGNDATAHEADER rdh; 
  3785.   char          Buffer[1]; 
  3786. } RGNDATA, *LPRGNDATA; 
  3787.  
  3788. typedef struct tagSCROLLINFO {
  3789.   UINT cbSize; 
  3790.   UINT fMask; 
  3791.   int  nMin; 
  3792.   int  nMax; 
  3793.   UINT nPage; 
  3794.   int  nPos; 
  3795.   int  nTrackPos; 
  3796. }   SCROLLINFO, *LPSCROLLINFO; 
  3797. typedef SCROLLINFO const *LPCSCROLLINFO; 
  3798.  
  3799. typedef struct _SECURITY_ATTRIBUTES { 
  3800.   DWORD  nLength; 
  3801.   LPVOID lpSecurityDescriptor; 
  3802.   WINBOOL   bInheritHandle; 
  3803. } SECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES; 
  3804.  
  3805. typedef DWORD SECURITY_INFORMATION, *PSECURITY_INFORMATION; 
  3806.  
  3807. typedef struct _selchange { 
  3808.   NMHDR nmhdr; 
  3809.   CHARRANGE chrg; 
  3810.   WORD seltyp; 
  3811. } SELCHANGE; 
  3812.  
  3813. typedef struct tagSERIALKEYS {  
  3814.   DWORD cbSize; 
  3815.   DWORD dwFlags; 
  3816.   LPSTR lpszActivePort; 
  3817.   LPSTR lpszPort; 
  3818.   DWORD iBaudRate; 
  3819.   DWORD iPortState; 
  3820. } SERIALKEYS,  * LPSERIALKEYS; 
  3821.  
  3822. typedef struct _SERVICE_TABLE_ENTRY { 
  3823.   LPTSTR lpServiceName; 
  3824.   LPSERVICE_MAIN_FUNCTION lpServiceProc; 
  3825. } SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY; 
  3826.  
  3827. typedef struct _SERVICE_TYPE_VALUE_ABS { 
  3828.   DWORD   dwNameSpace; 
  3829.   DWORD   dwValueType; 
  3830.   DWORD   dwValueSize; 
  3831.   LPTSTR  lpValueName; 
  3832.   PVOID   lpValue; 
  3833. } SERVICE_TYPE_VALUE_ABS; 
  3834.  
  3835. typedef struct _SERVICE_TYPE_INFO_ABS { 
  3836.   LPTSTR                  lpTypeName; 
  3837.   DWORD                   dwValueCount; 
  3838.   SERVICE_TYPE_VALUE_ABS  Values[1]; 
  3839. } SERVICE_TYPE_INFO_ABS; 
  3840.  
  3841. typedef struct _SESSION_BUFFER { 
  3842.   UCHAR lsn; 
  3843.   UCHAR state; 
  3844.   UCHAR local_name[NCBNAMSZ]; 
  3845.   UCHAR remote_name[NCBNAMSZ]; 
  3846.   UCHAR rcvs_outstanding; 
  3847.   UCHAR sends_outstanding; 
  3848. } SESSION_BUFFER; 
  3849.  
  3850. typedef struct _SESSION_HEADER { 
  3851.   UCHAR sess_name; 
  3852.   UCHAR num_sess; 
  3853.   UCHAR rcv_dg_outstanding; 
  3854.   UCHAR rcv_any_outstanding; 
  3855. } SESSION_HEADER; 
  3856.  
  3857. typedef struct _SET_PARTITION_INFORMATION { 
  3858.   BYTE PartitionType; 
  3859. } SET_PARTITION_INFORMATION ; 
  3860.  
  3861. typedef enum tagSHCONTF { 
  3862.   SHCONTF_FOLDERS = 32,         
  3863.   SHCONTF_NONFOLDERS = 64,      
  3864.   SHCONTF_INCLUDEHIDDEN = 128
  3865. } SHCONTF; 
  3866.  
  3867. typedef struct _SHFILEINFO { 
  3868.   HICON hIcon;                   
  3869.   int   iIcon;                   
  3870.   DWORD dwAttributes;            
  3871.   char  szDisplayName[MAX_PATH]; 
  3872.   char  szTypeName[80];          
  3873. } SHFILEINFO; 
  3874.  
  3875. typedef WORD FILEOP_FLAGS; 
  3876. typedef struct _SHFILEOPSTRUCT { 
  3877.   HWND         hwnd;                  
  3878.   UINT         wFunc;                 
  3879.   LPCSTR       pFrom;                 
  3880.   LPCSTR       pTo;                   
  3881.   FILEOP_FLAGS fFlags;                
  3882.   WINBOOL         fAnyOperationsAborted; 
  3883.   LPVOID       hNameMappings;         
  3884.   LPCSTR       lpszProgressTitle;     
  3885. } SHFILEOPSTRUCT,   *LPSHFILEOPSTRUCT; 
  3886.  
  3887. typedef enum tagSHGDN {
  3888.   SHGDN_NORMAL = 0, 
  3889.   SHGDN_INFOLDER = 1, 
  3890.   SHGDN_FORPARSING = 0x8000
  3891. } SHGNO; 
  3892.  
  3893. typedef struct _SHNAMEMAPPING { 
  3894.   LPSTR pszOldPath; 
  3895.   LPSTR pszNewPath; 
  3896.   int   cchOldPath; 
  3897.   int   cchNewPath; 
  3898. } SHNAMEMAPPING,   *LPSHNAMEMAPPING; 
  3899.  
  3900. typedef struct _SID_AND_ATTRIBUTES { 
  3901.   PSID  Sid; 
  3902.   DWORD Attributes; 
  3903. } SID_AND_ATTRIBUTES ; 
  3904.  
  3905. typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  3906. typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
  3907.  
  3908. typedef struct _SINGLE_LIST_ENTRY { 
  3909.   struct _SINGLE_LIST_ENTRY *Next; 
  3910. } SINGLE_LIST_ENTRY; 
  3911.  
  3912. typedef struct tagSOUNDSENTRY {  
  3913.   UINT cbSize; 
  3914.   DWORD dwFlags; 
  3915.   DWORD iFSTextEffect; 
  3916.   DWORD iFSTextEffectMSec; 
  3917.   DWORD iFSTextEffectColorBits; 
  3918.   DWORD iFSGrafEffect; 
  3919.   DWORD iFSGrafEffectMSec; 
  3920.   DWORD iFSGrafEffectColor; 
  3921.   DWORD iWindowsEffect; 
  3922.   DWORD iWindowsEffectMSec; 
  3923.   LPTSTR lpszWindowsEffectDLL; 
  3924.   DWORD iWindowsEffectOrdinal; 
  3925. } SOUNDSENTRY, *LPSOUNDSENTRY; 
  3926.  
  3927. typedef struct tagSTARTUPINFOA { 
  3928.   DWORD   cb; 
  3929.   LPSTR   lpReserved; 
  3930.   LPSTR   lpDesktop; 
  3931.   LPSTR   lpTitle; 
  3932.   DWORD   dwX; 
  3933.   DWORD   dwY; 
  3934.   DWORD   dwXSize; 
  3935.   DWORD   dwYSize; 
  3936.   DWORD   dwXCountChars; 
  3937.   DWORD   dwYCountChars; 
  3938.   DWORD   dwFillAttribute; 
  3939.   DWORD   dwFlags; 
  3940.   WORD    wShowWindow; 
  3941.   WORD    cbReserved2; 
  3942.   LPBYTE  lpReserved2; 
  3943.   HANDLE  hStdInput; 
  3944.   HANDLE  hStdOutput; 
  3945.   HANDLE  hStdError; 
  3946. } STARTUPINFOA, *PSTARTUPINFOA, *LPSTARTUPINFOA; 
  3947.  
  3948. typedef struct tagSTARTUPINFOW { 
  3949.   DWORD   cb; 
  3950.   LPWSTR  lpReserved; 
  3951.   LPWSTR  lpDesktop; 
  3952.   LPWSTR  lpTitle; 
  3953.   DWORD   dwX; 
  3954.   DWORD   dwY; 
  3955.   DWORD   dwXSize; 
  3956.   DWORD   dwYSize; 
  3957.   DWORD   dwXCountChars; 
  3958.   DWORD   dwYCountChars; 
  3959.   DWORD   dwFillAttribute; 
  3960.   DWORD   dwFlags; 
  3961.   WORD    wShowWindow; 
  3962.   WORD    cbReserved2; 
  3963.   LPBYTE  lpReserved2; 
  3964.   HANDLE  hStdInput; 
  3965.   HANDLE  hStdOutput; 
  3966.   HANDLE  hStdError; 
  3967. } STARTUPINFOW, *PSTARTUPINFOW, *LPSTARTUPINFOW; 
  3968.  
  3969. #ifdef    UNICODE
  3970. typedef    STARTUPINFOW    STARTUPINFO;
  3971. typedef    PSTARTUPINFOW    PSTARTUPINFO;
  3972. typedef    LPSTARTUPINFOW    LPSTARTUPINFO;
  3973. #else
  3974. typedef    STARTUPINFOA    STARTUPINFO;
  3975. typedef    PSTARTUPINFOA    PSTARTUPINFO;
  3976. typedef    LPSTARTUPINFOA    LPSTARTUPINFO;
  3977. #endif
  3978.  
  3979. typedef struct tagSTICKYKEYS {  
  3980.   DWORD cbSize; 
  3981.   DWORD dwFlags; 
  3982. } STICKYKEYS, *LPSTICKYKEYS; 
  3983.  
  3984. typedef struct _STRRET { 
  3985.   UINT uType; 
  3986.   union 
  3987.     { 
  3988.       LPWSTR pOleStr;        
  3989.       UINT   uOffset;        
  3990.       char   cStr[MAX_PATH]; 
  3991.     } DUMMYUNIONNAME; 
  3992. } STRRET, *LPSTRRET; 
  3993.  
  3994. typedef struct _tagSTYLEBUF {
  3995.   DWORD  dwStyle;           
  3996.   CHAR  szDescription[32];  
  3997. } STYLEBUF, *LPSTYLEBUF;
  3998.  
  3999. typedef struct tagSTYLESTRUCT {  
  4000.   DWORD styleOld;    
  4001.   DWORD styleNew;    
  4002. } STYLESTRUCT, * LPSTYLESTRUCT; 
  4003.  
  4004. typedef struct _SYSTEM_AUDIT_ACE { 
  4005.   ACE_HEADER  Header; 
  4006.   ACCESS_MASK Mask; 
  4007.   DWORD       SidStart; 
  4008. } SYSTEM_AUDIT_ACE; 
  4009.  
  4010. typedef struct _SYSTEM_INFO
  4011.   union
  4012.     {
  4013.       DWORD dwOemID;
  4014.       struct
  4015.         {
  4016.           WORD wProcessorArchitecture;
  4017.           WORD wReserved;
  4018.         }
  4019.       s;
  4020.     }
  4021.   u;
  4022.   DWORD  dwPageSize; 
  4023.   LPVOID lpMinimumApplicationAddress; 
  4024.   LPVOID lpMaximumApplicationAddress; 
  4025.   DWORD  dwActiveProcessorMask; 
  4026.   DWORD  dwNumberOfProcessors; 
  4027.   DWORD  dwProcessorType; 
  4028.   DWORD  dwAllocationGranularity; 
  4029.   WORD  wProcessorLevel; 
  4030.   WORD  wProcessorRevision; 
  4031. } SYSTEM_INFO, *LPSYSTEM_INFO; 
  4032.  
  4033. typedef struct _SYSTEM_POWER_STATUS {
  4034.   BYTE ACLineStatus;           
  4035.   BYTE  BatteryFlag;           
  4036.   BYTE  BatteryLifePercent;    
  4037.   BYTE  Reserved1;             
  4038.   DWORD  BatteryLifeTime;      
  4039.   DWORD  BatteryFullLifeTime;  
  4040. } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
  4041.  
  4042. typedef struct _TAPE_ERASE { 
  4043.   ULONG Type; 
  4044. } TAPE_ERASE; 
  4045.  
  4046. typedef struct _TAPE_GET_DRIVE_PARAMETERS { 
  4047.   BOOLEAN ECC; 
  4048.   BOOLEAN Compression; 
  4049.   BOOLEAN DataPadding; 
  4050.   BOOLEAN ReportSetmarks; 
  4051.   ULONG   DefaultBlockSize; 
  4052.   ULONG   MaximumBlockSize; 
  4053.   ULONG   MinimumBlockSize; 
  4054.   ULONG   MaximumPartitionCount; 
  4055.   ULONG   FeaturesLow; 
  4056.   ULONG   FeaturesHigh; 
  4057.   ULONG   EOTWarningZoneSize; 
  4058. } TAPE_GET_DRIVE_PARAMETERS; 
  4059.  
  4060. typedef struct _TAPE_GET_MEDIA_PARAMETERS {  
  4061.   LARGE_INTEGER   Capacity; 
  4062.   LARGE_INTEGER   Remaining; 
  4063.   DWORD   BlockSize; 
  4064.   DWORD   PartitionCount; 
  4065.   BOOLEAN WriteProtected; 
  4066.   BOOLEAN reserved[7];
  4067. } TAPE_GET_MEDIA_PARAMETERS; 
  4068.  
  4069. typedef struct _TAPE_GET_POSITION { 
  4070.   ULONG Type; 
  4071.   ULONG Partition; 
  4072.   ULONG OffsetLow; 
  4073.   ULONG OffsetHigh; 
  4074. } TAPE_GET_POSITION; 
  4075.  
  4076. typedef struct _TAPE_PREPARE { 
  4077.   ULONG Operation; 
  4078. } TAPE_PREPARE; 
  4079.  
  4080. typedef struct _TAPE_SET_DRIVE_PARAMETERS { 
  4081.   BOOLEAN ECC; 
  4082.   BOOLEAN Compression; 
  4083.   BOOLEAN DataPadding; 
  4084.   BOOLEAN ReportSetmarks; 
  4085.   ULONG   EOTWarningZoneSize; 
  4086. } TAPE_SET_DRIVE_PARAMETERS; 
  4087.  
  4088. typedef struct _TAPE_SET_MEDIA_PARAMETERS { 
  4089.   ULONG BlockSize; 
  4090. } TAPE_SET_MEDIA_PARAMETERS; 
  4091.  
  4092. typedef struct _TAPE_SET_POSITION { 
  4093.   ULONG Method; 
  4094.   ULONG Partition; 
  4095.   ULONG OffsetLow; 
  4096.   ULONG OffsetHigh; 
  4097. } TAPE_SET_POSITION; 
  4098.  
  4099. typedef struct _TAPE_WRITE_MARKS { 
  4100.   ULONG Type; 
  4101.   ULONG Count; 
  4102. } TAPE_WRITE_MARKS; 
  4103.  
  4104. typedef struct {  
  4105.   HINSTANCE hInst; 
  4106.   UINT nID; 
  4107. } TBADDBITMAP, *LPTBADDBITMAP; 
  4108.  
  4109. typedef struct _TBBUTTON { 
  4110.   int iBitmap; 
  4111.   int idCommand; 
  4112.   BYTE fsState; 
  4113.   BYTE fsStyle; 
  4114.   DWORD dwData; 
  4115.   int iString; 
  4116. } TBBUTTON,  * PTBBUTTON,  * LPTBBUTTON; 
  4117. typedef const TBBUTTON  * LPCTBBUTTON; 
  4118.  
  4119. typedef struct { 
  4120.   NMHDR hdr; 
  4121.   int iItem; 
  4122.   TBBUTTON tbButton; 
  4123.   int cchText; 
  4124.   LPTSTR pszText; 
  4125. } TBNOTIFY,  *LPTBNOTIFY; 
  4126.  
  4127. typedef struct { 
  4128.   HKEY hkr; 
  4129.   LPCTSTR pszSubKey; 
  4130.   LPCTSTR pszValueName; 
  4131. } TBSAVEPARAMS; 
  4132.  
  4133. typedef struct _TC_HITTESTINFO { 
  4134.   POINT pt;     
  4135.   UINT  flags;  
  4136. } TC_HITTESTINFO; 
  4137.  
  4138. typedef struct _TC_ITEM { 
  4139.   UINT mask;         
  4140.   UINT lpReserved1;  
  4141.   UINT lpReserved2;  
  4142.   LPTSTR pszText;     
  4143.   int cchTextMax;    
  4144.   int iImage;        
  4145.   LPARAM lParam;     
  4146. } TC_ITEM; 
  4147.  
  4148. typedef struct _TC_ITEMHEADER { 
  4149.   UINT mask;         
  4150.   UINT lpReserved1;  
  4151.   UINT lpReserved2;  
  4152.   LPTSTR pszText;     
  4153.   int cchTextMax;    
  4154.   int iImage;        
  4155. } TC_ITEMHEADER; 
  4156.  
  4157. typedef struct _TC_KEYDOWN { 
  4158.   NMHDR hdr;    
  4159.   WORD wVKey;   
  4160.   UINT flags;
  4161. } TC_KEYDOWN; 
  4162.  
  4163. typedef struct _textrange { 
  4164.   CHARRANGE chrg; 
  4165.   LPSTR lpstrText; 
  4166. } TEXTRANGE; 
  4167.  
  4168. typedef struct _TIME_ZONE_INFORMATION { 
  4169.   LONG       Bias; 
  4170.   WCHAR      StandardName[ 32 ]; 
  4171.   SYSTEMTIME StandardDate; 
  4172.   LONG       StandardBias; 
  4173.   WCHAR      DaylightName[ 32 ]; 
  4174.   SYSTEMTIME DaylightDate; 
  4175.   LONG       DaylightBias; 
  4176. } TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION; 
  4177.  
  4178. typedef struct tagTOGGLEKEYS {   
  4179.   DWORD cbSize; 
  4180.   DWORD dwFlags; 
  4181. } TOGGLEKEYS; 
  4182.  
  4183. typedef struct _TOKEN_SOURCE {
  4184.   CHAR SourceName[8]; 
  4185.   LUID SourceIdentifier; 
  4186. } TOKEN_SOURCE; 
  4187.  
  4188. typedef struct _TOKEN_CONTROL { 
  4189.   LUID TokenId; 
  4190.   LUID AuthenticationId; 
  4191.   LUID ModifiedId; 
  4192.   TOKEN_SOURCE TokenSource; 
  4193. } TOKEN_CONTROL ; 
  4194.  
  4195. typedef struct _TOKEN_DEFAULT_DACL {  
  4196.   PACL DefaultDacl; 
  4197. } TOKEN_DEFAULT_DACL; 
  4198.  
  4199. typedef struct _TOKEN_GROUPS { 
  4200.   DWORD GroupCount; 
  4201.   SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; 
  4202. } TOKEN_GROUPS, *PTOKEN_GROUPS, *LPTOKEN_GROUPS; 
  4203.  
  4204. typedef struct _TOKEN_OWNER { 
  4205.   PSID Owner; 
  4206. } TOKEN_OWNER; 
  4207.  
  4208. typedef struct _TOKEN_PRIMARY_GROUP { 
  4209.   PSID PrimaryGroup; 
  4210. } TOKEN_PRIMARY_GROUP; 
  4211.  
  4212. typedef struct _TOKEN_PRIVILEGES { 
  4213.   DWORD PrivilegeCount; 
  4214.   LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 
  4215. } TOKEN_PRIVILEGES, *PTOKEN_PRIVILEGES, *LPTOKEN_PRIVILEGES; 
  4216.  
  4217. typedef struct _TOKEN_STATISTICS { 
  4218.   LUID  TokenId; 
  4219.   LUID  AuthenticationId; 
  4220.   LARGE_INTEGER ExpirationTime; 
  4221.   TOKEN_TYPE    TokenType; 
  4222.   SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 
  4223.   DWORD DynamicCharged; 
  4224.   DWORD DynamicAvailable; 
  4225.   DWORD GroupCount; 
  4226.   DWORD PrivilegeCount; 
  4227.   LUID  ModifiedId; 
  4228. } TOKEN_STATISTICS; 
  4229.  
  4230. typedef struct _TOKEN_USER { 
  4231.   SID_AND_ATTRIBUTES User; 
  4232. } TOKEN_USER; 
  4233.  
  4234. typedef struct {  
  4235.   UINT      cbSize;    
  4236.   UINT      uFlags;    
  4237.   HWND      hwnd;      
  4238.   UINT      uId;       
  4239.   RECT      rect;      
  4240.   HINSTANCE hinst;     
  4241.   LPTSTR     lpszText;  
  4242. } TOOLINFO,   *PTOOLINFO,   *LPTOOLINFO; 
  4243.  
  4244. typedef struct { 
  4245.   NMHDR     hdr;        
  4246.   LPTSTR    lpszText;   
  4247.   char      szText[80]; 
  4248.   HINSTANCE hinst;      
  4249.   UINT      uFlags;     
  4250. } TOOLTIPTEXT,   *LPTOOLTIPTEXT; 
  4251.  
  4252. typedef struct tagTPMPARAMS { 
  4253.   UINT cbSize; 
  4254.   RECT rcExclude; 
  4255. } TPMPARAMS,   *LPTPMPARAMS; 
  4256.  
  4257. typedef struct _TRANSMIT_FILE_BUFFERS {  
  4258.   PVOID Head; 
  4259.   DWORD HeadLength; 
  4260.   PVOID Tail; 
  4261.   DWORD TailLength; 
  4262. } TRANSMIT_FILE_BUFFERS; 
  4263.  
  4264. typedef struct _TT_HITTESTINFO { 
  4265.   HWND hwnd;   
  4266.   POINT pt;    
  4267.   TOOLINFO ti; 
  4268. } TTHITTESTINFO,   * LPHITTESTINFO; 
  4269.  
  4270. typedef struct tagTTPOLYCURVE { 
  4271.   WORD    wType; 
  4272.   WORD    cpfx; 
  4273.   POINTFX apfx[1]; 
  4274. } TTPOLYCURVE,  * LPTTPOLYCURVE; 
  4275.  
  4276. typedef struct _TTPOLYGONHEADER { 
  4277.   DWORD   cb; 
  4278.   DWORD   dwType; 
  4279.   POINTFX pfxStart; 
  4280. } TTPOLYGONHEADER,  * LPTTPOLYGONHEADER; 
  4281.  
  4282. typedef struct _TV_DISPINFO { 
  4283.   NMHDR   hdr;  
  4284.   TV_ITEM item;  
  4285. } TV_DISPINFO; 
  4286.  
  4287. typedef struct _TVHITTESTINFO { 
  4288.   POINT     pt;     
  4289.   UINT      flags;  
  4290.   HTREEITEM hItem;  
  4291. } TV_HITTESTINFO,   *LPTV_HITTESTINFO; 
  4292.  
  4293. typedef struct _TV_INSERTSTRUCT { 
  4294.   HTREEITEM hParent;       
  4295.   HTREEITEM hInsertAfter;  
  4296.   TV_ITEM   item;          
  4297. } TV_INSERTSTRUCT,   *LPTV_INSERTSTRUCT; 
  4298.  
  4299. typedef struct _TV_KEYDOWN {
  4300.   NMHDR hdr;    
  4301.   WORD  wVKey;  
  4302.   UINT  flags;  
  4303. } TV_KEYDOWN; 
  4304.  
  4305. typedef struct _TV_SORTCB { 
  4306.   HTREEITEM    hParent;       
  4307.   PFNTVCOMPARE lpfnCompare;   
  4308.   LPARAM       lParam;        
  4309. } TV_SORTCB,   *LPTV_SORTCB;  
  4310.  
  4311. typedef struct { 
  4312.   UINT nSec;   
  4313.   UINT nInc;   
  4314. } UDACCEL; 
  4315.  
  4316. typedef struct _ULARGE_INTEGER { 
  4317.   DWORD LowPart; 
  4318.   DWORD HighPart; 
  4319. } ULARGE_INTEGER, *PULARGE_INTEGER; 
  4320.  
  4321. typedef struct _UNIVERSAL_NAME_INFO { 
  4322.   LPTSTR  lpUniversalName; 
  4323. } UNIVERSAL_NAME_INFO; 
  4324.  
  4325. typedef struct tagUSEROBJECTFLAGS { 
  4326.   WINBOOL fInherit; 
  4327.   WINBOOL fReserved; 
  4328.   DWORD dwFlags; 
  4329. } USEROBJECTFLAGS; 
  4330.  
  4331. typedef struct value_ent {
  4332.     LPTSTR   ve_valuename;
  4333.     DWORD ve_valuelen;
  4334.     DWORD ve_valueptr;
  4335.     DWORD ve_type;
  4336. } VALENT, *PVALENT;
  4337.  
  4338. typedef struct _VERIFY_INFORMATION { 
  4339.   LARGE_INTEGER  StartingOffset; 
  4340.   DWORD  Length; 
  4341. } VERIFY_INFORMATION ; 
  4342.  
  4343. typedef struct _VS_FIXEDFILEINFO { 
  4344.   DWORD dwSignature; 
  4345.   DWORD dwStrucVersion; 
  4346.   DWORD dwFileVersionMS; 
  4347.   DWORD dwFileVersionLS; 
  4348.   DWORD dwProductVersionMS; 
  4349.   DWORD dwProductVersionLS; 
  4350.   DWORD dwFileFlagsMask; 
  4351.   DWORD dwFileFlags; 
  4352.   DWORD dwFileOS; 
  4353.   DWORD dwFileType; 
  4354.   DWORD dwFileSubtype; 
  4355.   DWORD dwFileDateMS; 
  4356.   DWORD dwFileDateLS; 
  4357. } VS_FIXEDFILEINFO; 
  4358.  
  4359. typedef struct _WIN32_FIND_DATAA { 
  4360.   DWORD dwFileAttributes; 
  4361.   FILETIME ftCreationTime; 
  4362.   FILETIME ftLastAccessTime; 
  4363.   FILETIME ftLastWriteTime; 
  4364.   DWORD    nFileSizeHigh; 
  4365.   DWORD    nFileSizeLow; 
  4366.   DWORD    dwReserved0; 
  4367.   DWORD    dwReserved1; 
  4368.   CHAR     cFileName[ MAX_PATH ]; 
  4369.   CHAR     cAlternateFileName[ 14 ]; 
  4370. } WIN32_FIND_DATAA, *LPWIN32_FIND_DATAA, *PWIN32_FIND_DATAA; 
  4371.  
  4372. typedef struct _WIN32_FIND_DATAW { 
  4373.   DWORD dwFileAttributes; 
  4374.   FILETIME ftCreationTime; 
  4375.   FILETIME ftLastAccessTime; 
  4376.   FILETIME ftLastWriteTime; 
  4377.   DWORD    nFileSizeHigh; 
  4378.   DWORD    nFileSizeLow; 
  4379.   DWORD    dwReserved0; 
  4380.   DWORD    dwReserved1; 
  4381.   WCHAR    cFileName[ MAX_PATH ]; 
  4382.   WCHAR    cAlternateFileName[ 14 ]; 
  4383. } WIN32_FIND_DATAW, *LPWIN32_FIND_DATAW, *PWIN32_FIND_DATAW; 
  4384.  
  4385. #ifdef    UNICODE
  4386. typedef    WIN32_FIND_DATAW    WIN32_FIND_DATA;
  4387. #else
  4388. typedef    WIN32_FIND_DATAA    WIN32_FIND_DATA;
  4389. #endif
  4390. typedef    WIN32_FIND_DATA    *LPWIN32_FIND_DATA, *PWIN32_FIND_DATA;
  4391.  
  4392.  
  4393. typedef struct _WIN32_STREAM_ID { 
  4394.   DWORD dwStreamId; 
  4395.   DWORD dwStreamAttributes; 
  4396.   LARGE_INTEGER Size; 
  4397.   DWORD dwStreamNameSize; 
  4398.   WCHAR *cStreamName ; 
  4399. } WIN32_STREAM_ID;
  4400.  
  4401. typedef struct _WINDOWPLACEMENT {  
  4402.   UINT  length;               
  4403.   UINT  flags;                
  4404.   UINT  showCmd;              
  4405.   POINT ptMinPosition;        
  4406.   POINT ptMaxPosition;        
  4407.   RECT  rcNormalPosition;     
  4408. } WINDOWPLACEMENT; 
  4409.  
  4410. typedef struct _WNDCLASSA {  
  4411.   UINT    style; 
  4412.   WNDPROC lpfnWndProc; 
  4413.   int     cbClsExtra; 
  4414.   int     cbWndExtra; 
  4415.   HANDLE  hInstance; 
  4416.   HICON   hIcon; 
  4417.   HCURSOR hCursor; 
  4418.   HBRUSH  hbrBackground; 
  4419.   LPCSTR  lpszMenuName; 
  4420.   LPCSTR  lpszClassName; 
  4421. } WNDCLASSA, *LPWNDCLASSA; 
  4422.  
  4423. typedef struct _WNDCLASSW {  
  4424.   UINT    style; 
  4425.   WNDPROC lpfnWndProc; 
  4426.   int     cbClsExtra; 
  4427.   int     cbWndExtra; 
  4428.   HANDLE  hInstance; 
  4429.   HICON   hIcon; 
  4430.   HCURSOR hCursor; 
  4431.   HBRUSH  hbrBackground; 
  4432.   LPCWSTR lpszMenuName; 
  4433.   LPCWSTR lpszClassName; 
  4434. } WNDCLASSW, *LPWNDCLASSW; 
  4435.  
  4436. #ifdef    UNICODE
  4437. typedef    WNDCLASSW    WNDCLASS;
  4438. #else
  4439. typedef    WNDCLASSA    WNDCLASS;
  4440. #endif
  4441. typedef    WNDCLASS    *LPWNDCLASS;
  4442.  
  4443. typedef struct _WNDCLASSEXA { 
  4444.   UINT    cbSize; 
  4445.   UINT    style; 
  4446.   WNDPROC lpfnWndProc; 
  4447.   int     cbClsExtra; 
  4448.   int     cbWndExtra; 
  4449.   HANDLE  hInstance; 
  4450.   HICON   hIcon; 
  4451.   HCURSOR hCursor; 
  4452.   HBRUSH  hbrBackground; 
  4453.   LPCSTR  lpszMenuName; 
  4454.   LPCSTR  lpszClassName; 
  4455.   HICON   hIconSm; 
  4456. } WNDCLASSEXA, *LPWNDCLASSEXA; 
  4457.  
  4458. typedef struct _WNDCLASSEXW { 
  4459.   UINT    cbSize; 
  4460.   UINT    style; 
  4461.   WNDPROC lpfnWndProc; 
  4462.   int     cbClsExtra; 
  4463.   int     cbWndExtra; 
  4464.   HANDLE  hInstance; 
  4465.   HICON   hIcon; 
  4466.   HCURSOR hCursor; 
  4467.   HBRUSH  hbrBackground; 
  4468.   LPCWSTR lpszMenuName; 
  4469.   LPCWSTR lpszClassName; 
  4470.   HICON   hIconSm; 
  4471. } WNDCLASSEXW, *LPWNDCLASSEXW; 
  4472.  
  4473. #ifdef UNICODE
  4474. typedef    WNDCLASSEXW    WNDCLASSEX, *LPWNDCLASSEX;
  4475. #else
  4476. typedef    WNDCLASSEXA    WNDCLASSEX, *LPWNDCLASSEX;
  4477. #endif
  4478.  
  4479. typedef struct _CONNECTDLGSTRUCT {
  4480.   DWORD cbStructure;
  4481.   HWND hwndOwner;
  4482.   LPNETRESOURCE lpConnRes;
  4483.   DWORD dwFlags;
  4484.   DWORD dwDevNum;
  4485. } CONNECTDLGSTRUCT, *LPCONNECTDLGSTRUCT;
  4486.  
  4487. typedef struct _DISCDLGSTRUCT {
  4488.   DWORD           cbStructure;
  4489.   HWND            hwndOwner;
  4490.   LPTSTR           lpLocalName;
  4491.   LPTSTR           lpRemoteName;
  4492.   DWORD           dwFlags;
  4493. } DISCDLGSTRUCT, *LPDISCDLGSTRUCT;
  4494.  
  4495. typedef struct _NETINFOSTRUCT{
  4496.     DWORD cbStructure;
  4497.     DWORD dwProviderVersion;
  4498.     DWORD dwStatus;
  4499.     DWORD dwCharacteristics;
  4500.     DWORD dwHandle;
  4501.     WORD  wNetType;
  4502.     DWORD dwPrinters;
  4503.     DWORD dwDrives;
  4504. } NETINFOSTRUCT, *LPNETINFOSTRUCT;
  4505.  
  4506. typedef struct _NETCONNECTINFOSTRUCT{
  4507.   DWORD cbStructure;
  4508.   DWORD dwFlags;
  4509.   DWORD dwSpeed;
  4510.   DWORD dwDelay;
  4511.   DWORD dwOptDataSize;
  4512. } NETCONNECTINFOSTRUCT, *LPNETCONNECTINFOSTRUCT;
  4513.  
  4514. typedef int CALLBACK (*ENUMMETAFILEPROC) (HDC, HANDLETABLE, 
  4515.                       METARECORD, int, LPARAM);
  4516. typedef int CALLBACK (*ENHMETAFILEPROC) (HDC, HANDLETABLE, 
  4517.                      ENHMETARECORD, int, LPARAM);
  4518.  
  4519. typedef int CALLBACK (*ENUMFONTSPROC) (LPLOGFONT, LPTEXTMETRIC, DWORD, LPARAM);
  4520. typedef int CALLBACK (*FONTENUMPROC) (ENUMLOGFONT *, NEWTEXTMETRIC *, 
  4521.                       int, LPARAM);
  4522. typedef int CALLBACK (*FONTENUMEXPROC) (ENUMLOGFONTEX *, NEWTEXTMETRICEX *, 
  4523.                       int, LPARAM);
  4524.  
  4525. typedef VOID CALLBACK (*LPOVERLAPPED_COMPLETION_ROUTINE) (DWORD, DWORD, 
  4526.                               LPOVERLAPPED);
  4527.  
  4528. /*
  4529.   Structures for the extensions to OpenGL
  4530.   */
  4531. typedef struct _POINTFLOAT 
  4532. {
  4533.   FLOAT   x;
  4534.   FLOAT   y;
  4535. } POINTFLOAT, *PPOINTFLOAT;
  4536.  
  4537. typedef struct _GLYPHMETRICSFLOAT
  4538. {
  4539.   FLOAT       gmfBlackBoxX;
  4540.   FLOAT       gmfBlackBoxY;
  4541.   POINTFLOAT  gmfptGlyphOrigin;
  4542.   FLOAT       gmfCellIncX;
  4543.   FLOAT       gmfCellIncY;
  4544. } GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
  4545.  
  4546. typedef struct tagLAYERPLANEDESCRIPTOR
  4547. {
  4548.   WORD  nSize; 
  4549.   WORD  nVersion; 
  4550.   DWORD dwFlags; 
  4551.   BYTE  iPixelType; 
  4552.   BYTE  cColorBits; 
  4553.   BYTE  cRedBits; 
  4554.   BYTE  cRedShift; 
  4555.   BYTE  cGreenBits; 
  4556.   BYTE  cGreenShift; 
  4557.   BYTE  cBlueBits; 
  4558.   BYTE  cBlueShift; 
  4559.   BYTE  cAlphaBits; 
  4560.   BYTE  cAlphaShift; 
  4561.   BYTE  cAccumBits; 
  4562.   BYTE  cAccumRedBits; 
  4563.   BYTE  cAccumGreenBits; 
  4564.   BYTE  cAccumBlueBits; 
  4565.   BYTE  cAccumAlphaBits; 
  4566.   BYTE  cDepthBits; 
  4567.   BYTE  cStencilBits; 
  4568.   BYTE  cAuxBuffers; 
  4569.   BYTE  iLayerPlane;
  4570.   BYTE  bReserved; 
  4571.   COLORREF crTransparent; 
  4572. } LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR; 
  4573.  
  4574. typedef struct tagPIXELFORMATDESCRIPTOR
  4575. {
  4576.   WORD  nSize;
  4577.   WORD  nVersion;
  4578.   DWORD dwFlags;
  4579.   BYTE  iPixelType;
  4580.   BYTE  cColorBits;
  4581.   BYTE  cRedBits;
  4582.   BYTE  cRedShift;
  4583.   BYTE  cGreenBits;
  4584.   BYTE  cGreenShift;
  4585.   BYTE  cBlueBits;
  4586.   BYTE  cBlueShift;
  4587.   BYTE  cAlphaBits;
  4588.   BYTE  cAlphaShift;
  4589.   BYTE  cAccumBits;
  4590.   BYTE  cAccumRedBits;
  4591.   BYTE  cAccumGreenBits;
  4592.   BYTE  cAccumBlueBits;
  4593.   BYTE  cAccumAlphaBits;
  4594.   BYTE  cDepthBits;
  4595.   BYTE  cStencilBits;
  4596.   BYTE  cAuxBuffers;
  4597.   BYTE  iLayerType;
  4598.   BYTE  bReserved;
  4599.   DWORD dwLayerMask;
  4600.   DWORD dwVisibleMask;
  4601.   DWORD dwDamageMask;
  4602. } PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
  4603.  
  4604. typedef struct
  4605. {
  4606.   LPWSTR    usri2_name;
  4607.   LPWSTR    usri2_password;
  4608.   DWORD     usri2_password_age;
  4609.   DWORD     usri2_priv;
  4610.   LPWSTR    usri2_home_dir;
  4611.   LPWSTR    usri2_comment;
  4612.   DWORD     usri2_flags;
  4613.   LPWSTR    usri2_script_path;
  4614.   DWORD     usri2_auth_flags;
  4615.   LPWSTR    usri2_full_name;
  4616.   LPWSTR    usri2_usr_comment;
  4617.   LPWSTR    usri2_parms;
  4618.   LPWSTR    usri2_workstations;
  4619.   DWORD     usri2_last_logon;
  4620.   DWORD     usri2_last_logoff;
  4621.   DWORD     usri2_acct_expires;
  4622.   DWORD     usri2_max_storage;
  4623.   DWORD     usri2_units_per_week;
  4624.   PBYTE     usri2_logon_hours;
  4625.   DWORD     usri2_bad_pw_count;
  4626.   DWORD     usri2_num_logons;
  4627.   LPWSTR    usri2_logon_server;
  4628.   DWORD     usri2_country_code;
  4629.   DWORD     usri2_code_page;
  4630. } USER_INFO_2, *PUSER_INFO_2, *LPUSER_INFO_2;
  4631.  
  4632. typedef struct
  4633. {
  4634.   LPWSTR    usri0_name;
  4635. } USER_INFO_0, *PUSER_INFO_0, *LPUSER_INFO_0;
  4636.  
  4637. typedef struct
  4638. {
  4639.   LPWSTR    usri3_name;
  4640.   LPWSTR    usri3_password;
  4641.   DWORD     usri3_password_age;
  4642.   DWORD     usri3_priv;
  4643.   LPWSTR    usri3_home_dir;
  4644.   LPWSTR    usri3_comment;
  4645.   DWORD     usri3_flags;
  4646.   LPWSTR    usri3_script_path;
  4647.   DWORD     usri3_auth_flags;
  4648.   LPWSTR    usri3_full_name;
  4649.   LPWSTR    usri3_usr_comment;
  4650.   LPWSTR    usri3_parms;
  4651.   LPWSTR    usri3_workstations;
  4652.   DWORD     usri3_last_logon;
  4653.   DWORD     usri3_last_logoff;
  4654.   DWORD     usri3_acct_expires;
  4655.   DWORD     usri3_max_storage;
  4656.   DWORD     usri3_units_per_week;
  4657.   PBYTE     usri3_logon_hours;
  4658.   DWORD     usri3_bad_pw_count;
  4659.   DWORD     usri3_num_logons;
  4660.   LPWSTR    usri3_logon_server;
  4661.   DWORD     usri3_country_code;
  4662.   DWORD     usri3_code_page;
  4663.   DWORD     usri3_user_id;
  4664.   DWORD     usri3_primary_group_id;
  4665.   LPWSTR    usri3_profile;
  4666.   LPWSTR    usri3_home_dir_drive;
  4667.   DWORD     usri3_password_expired;
  4668. } USER_INFO_3, *PUSER_INFO_3, *LPUSER_INFO_3;
  4669.  
  4670. typedef struct
  4671. {
  4672.   LPWSTR   grpi2_name;
  4673.   LPWSTR   grpi2_comment;
  4674.   DWORD    grpi2_group_id;
  4675.   DWORD    grpi2_attributes;
  4676. } GROUP_INFO_2, *PGROUP_INFO_2;
  4677.  
  4678. typedef struct
  4679. {
  4680.   LPWSTR   lgrpi0_name;
  4681. } LOCALGROUP_INFO_0, *PLOCALGROUP_INFO_0, *LPLOCALGROUP_INFO_0;
  4682.  
  4683. /* PE executable header.  */
  4684.  
  4685. typedef struct tagIMAGE_DOS_HEADER
  4686. {
  4687.     WORD    e_magic;
  4688.     WORD    e_cblp;        /* Bytes on last page of file */
  4689.     WORD    e_cp;        /* Pages in file */
  4690.     WORD    e_crlc;        /* Relocations */
  4691.     WORD    e_cparhdr;    /* Size of header in paragraphs */
  4692.     WORD    e_minalloc;    /* Minimum extra paragraphs needed */
  4693.     WORD    e_maxalloc;    /* Maximum extra paragraphs needed */
  4694.     WORD    e_ss;        /* Initial (relative) SS */
  4695.     WORD    e_sp;        /* Initial SP */
  4696.     WORD    e_csum;        /* Checksum */
  4697.     WORD    e_ip;        /* Initial IP */
  4698.     WORD    e_cs;        /* Initial (relative) CS */
  4699.     WORD    e_lfarlc;    /* File address of relocation table */
  4700.     WORD    e_ovno;        /* Overlay number */
  4701.     WORD    e_res[4];    /* Reserved */
  4702.     WORD    e_oemid;    /* OEM identifier */
  4703.     WORD    e_oeminfo;    /* OEM specific information */
  4704.     WORD    e_res2[10];    /* Reserved */
  4705.     LONG    e_lfanew;    /* File address of new exe header */
  4706. } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
  4707.  
  4708. typedef struct tagIMAGE_OS2_HEADER
  4709. {
  4710.     WORD    ne_magic;
  4711.     CHAR    ne_ver;        /* Version number */
  4712.     CHAR    ne_rev;        /* Revision number */
  4713.     WORD    ne_enttab;    /* Offset of entry table */
  4714.     WORD    ne_cbenttab;    /* Size of entry table in bytes */
  4715.     LONG    ne_crc;        /* Checksum of entire file */
  4716.     WORD    ne_flags;
  4717.     WORD    ne_autodata;    /* Automatic data segment number */
  4718.     WORD    ne_heap;    /* Initial heap */
  4719.     WORD    ne_stack;    /* Initial stack */
  4720.     LONG    ne_csip;    /* Initial CS:IP */
  4721.     LONG    ne_sssp;    /* Initial SS:SP */
  4722.     WORD    ne_cseg;    /* Count of file segments */
  4723.     WORD    ne_cmod;    /* Entries in module reference table */
  4724.     WORD    ne_cbnrestab;    /* Size of non-resident name table in bytes */
  4725.     WORD    ne_segtab;    /* Offset of segment table */
  4726.     WORD    ne_rsrctab;    /* Offset of resource table */
  4727.     WORD    ne_restab;    /* Offset of resident name table */
  4728.     WORD    ne_modtab;    /* Offset of module reference table */
  4729.     WORD    ne_imptab;    /* Offset of imported name table */
  4730.     LONG    ne_nrestab;    /* Offset of non-resident name table */
  4731.     WORD    ne_cmovent;    /* Count of movable entries */
  4732.     WORD    ne_align;    /* Segment alignment shift count */
  4733.     WORD    ne_cres;    /* Count of resource segments */
  4734.     BYTE    ne_exetyp;    /* Target OS */
  4735.     BYTE    ne_flagsothers;    /* Other flags */
  4736.     WORD    ne_pretthunks;    /* Offset to return thunks */
  4737.     WORD    ne_psegrefbytes;    /* Offset to segment ref. bytes */
  4738.     WORD    ne_swaparea;    /* Minimum code swap area size */
  4739.     WORD    ne_expver;    /* Expected Windows version number */
  4740. } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER;
  4741.  
  4742. typedef struct tagIMAGE_VXD_HEADER
  4743. {
  4744.     WORD    e32_magic;
  4745.     BYTE    e32_border;    /* Byte ordering */
  4746.     BYTE    e32_worder;    /* Word ordering */
  4747.     DWORD    e32_level;    /* Format level (= 0) */
  4748.     WORD    e32_cpu;    /* CPU type */
  4749.     WORD    e32_os;        /* OS type */
  4750.     DWORD    e32_ver;    /* Module version */
  4751.     DWORD    e32_mflags;    /* Module flags */
  4752.     DWORD    e32_mpages;    /* Number of module pages */
  4753.     DWORD    e32_startobj;    /* Object number for instruction pointer */
  4754.     DWORD    e32_eip;    /* Extended instruction pointer */
  4755.     DWORD    e32_stackobj;    /* Object number for stack pointer */
  4756.     DWORD    e32_esp;    /* Extended stack pointer */
  4757.     DWORD    e32_pagesize;    /* Page size */
  4758.     DWORD    e32_lastpagesize;    /* Size of last page */
  4759.     DWORD    e32_fixupsize;    /* Fixup section size */
  4760.     DWORD    e32_fisupsum;    /* Fixup section checksum */
  4761.     DWORD    e32_ldrsize;    /* Loader section size */
  4762.     DWORD    e32_ldrsum;    /* Loader section checksum */
  4763.     DWORD    e32_objtab;    /* Object table offset */
  4764.     DWORD    e32_objcnt;    /* Count of objects */
  4765.     DWORD    e32_objmap;    /* Object page map offset */
  4766.     DWORD    e32_itermap;    /* Object iterated data map offset */
  4767.     DWORD    e32_rsrctab;    /* Offset of resource table */
  4768.     DWORD    e32_rsrccnt;    /* Number of resources */
  4769.     DWORD    e32_restab;    /* Offset of resident name table */
  4770.     DWORD    e32_enttab;    /* Offset of entry table */
  4771.     DWORD    e32_dirtab;    /* Offset of module directive table */
  4772.     DWORD    e32_dircnt;    /* Number of module directives */
  4773.     DWORD    e32_fpagetab;    /* Offset of fixup page table */
  4774.     DWORD    e32_frectab;    /* Offset of fixup record table */
  4775.     DWORD    e32_impmod;    /* Offset of import module name table */
  4776.     DWORD    e32_impmodcnt;    /* Number of import module names */
  4777.     DWORD    e32_impproc;    /* Offset of import procedure name table */
  4778.     DWORD    e32_pagesum;    /* Offset of per-page checksum table */
  4779.     DWORD    e32_datapage;    /* Offset of enumerated data pages */
  4780.     DWORD    e32_preload;    /* Offset of preload pages */
  4781.     DWORD    e32_nrestab;    /* Offset of non-resident name table */
  4782.     DWORD    e32_cbnrestab;    /* Size of non-resident name table in bytes */
  4783.     DWORD    e32_nressum;    /* Non-resident name table checksum */
  4784.     DWORD    e32_autodata;    /* Object number for automatic data object */
  4785.     DWORD    e32_debuginfo;    /* Offset of debugging information */
  4786.     DWORD    e32_debuglen;    /* Size of debugging information in bytes */
  4787.     DWORD    e32_instpreload;    /* Number of instance pages in preload section */
  4788.     DWORD    e32_instdemand;    /* Number of instance pages in demand load section */
  4789.     DWORD    e32_heapsize;    /* Size of heap - for 16-bit apps */
  4790.     BYTE    e32_res3[12];    /* Reserved */
  4791.     DWORD    e32_winresoff;    /* Offset of windows resources ? */
  4792.     DWORD    e32_winreslen;    /* Size of windows resources in bytes ? */
  4793.     WORD    e32_devid;    /* Device ID */
  4794.     WORD    e32_ddkver;    /* DDK version */
  4795. } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER;
  4796.  
  4797. #ifdef __cplusplus
  4798. }
  4799. #endif /* __cplusplus */
  4800.  
  4801. #endif    /* RC_INVOKED */
  4802.  
  4803. #endif /* _GNU_H_WINDOWS32_STRUCTURES */
  4804.  
  4805.